目錄
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則一定拋出了某種異常對象