還不抓緊進來學習java異常?

java異常分類及處理

概念

​ 如果某個方法不能按照正常的途徑完成任務,就可以通過另一種路徑退出方法。在這種情況下會拋出一個封裝了錯誤信息的對象。此時,這個方法會立刻退出同時不返回任何值。另外,調用這個方法的其他代碼也無法繼續執行,異常處理機制會將代碼執行交給異常處理器。

異常分類

Throwable是java語言中所有錯誤或者異常的超類,其中下一層分爲Error和Exception

Error

  • 是指java運行時系統的內部錯誤和資源耗盡錯誤。應用程序不會拋出該類對象。如果出現了這樣的錯誤,除了告知用戶,剩下的就是盡力使程序安全的終止

Exception

有兩個分支一個是運行時異常RuntimeException,一個是CheckedException

RuntimeException
  • 是那些可能在Java虛擬機正常運行期間拋出的異常的超類。如果出現,一定是程序員書寫導致的

  • NullPointerException 、 ClassCastException ;

CheckedException
  • 一般是外部錯誤,這種異常都發生在編譯階段,java編譯器會強制程序去捕獲此類異常,即會出現要求你把這段可能出現異常的程序進行try catch

  • 一般包含幾個方面

    • 試圖在文件尾部讀取數據
    • 試圖打開一個錯誤格式的URL
    • 試圖根據給定的字符串查找class對象,而這個字符串表示的類並不存在
  • I/O 錯誤導致的 IOException、SQLException。

異常的處理方式

不處理

​ 遇到異常問題不進行具體的處理,而是繼續拋給調用者(throw throws)

  • 拋出異常有三種形式
    • throw
    • throws
    • 系統自動拋出異常

實例:

public class test {
    public static void main(String[] args) throws Exception {

        div(8,0);
        String s="abc";
        if(s.equals("abc")){
            //手動拋出一個數字格式化異常
            throw new NumberFormatException();
        }else {
            System.out.println(s);
        }
    }
    public static  int div(int a,int b)throws Exception{
        return a/b;
    }
}

處理

try catch捕獲異常針對性處理方式

Throw 和 Throws 的區別

Throw

  • 用在函數內,後面跟着的是異常對象

  • 很明確的表示了這個地方要拋出這個異常

  • 拋出具體的問題對象,執行到throw,功能就已經結束了,跳轉到調用者,並將具體的問題對象拋給調用者。

  • 當throw語句獨立存在時,不要定義其他語句,因爲執行不到

Throws

  • 用在函數上,後面跟的是異常類,可以跟多個。

  • E1,E2只是告訴程序這個方法可能會拋出這些異常,方法的調用者可能要處理這些異常,而這些異常E1,E2可能是該函數體產生的

  • 用來聲明異常,讓調用者知道該功能可能會出現的問題,可以給出預先的處理方式

語法: (修飾符)(方法名)([參數列表])[throws(異常類)]{…}

public void doA(int a) throws Exception1,Exception3{…}

總結

  • throws表示出現異常的一種可能性,並不一定會發生這些異常
    id doA(int a) throws Exception1,Exception3{…}

總結

  • throws表示出現異常的一種可能性,並不一定會發生這些異常
  • throw則是拋出了異常,執行throw則一定拋出了某種異常對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章