程序錯誤
-編譯錯誤(compilation error)
-運行時錯誤(rentime erroe)
-邏輯錯誤(logic error)
異常(exception):程序運行時出現的非正常情況,它中斷正常的程序控制流
Java給程序員提供了處理的運行時錯誤的功能,即異常處理
異常類:用java累表示異常情況,可擴展,可重用
在java中,處理異常的5個關鍵字:
-try:捕捉異常
-catch:處理異常
-finally:不管try塊中的代碼如何退出,都將執行finally塊
-throw:拋出異常
-throws:聲明異常
一個try後面可以跟多個catch
Try後面只能有一個finally
Try和finally之間可以沒有catch
Throws:如果一個方法不想處理異常,就可以通過throws語句講異常拋向上級調用方法。
Throw:用於拋出異常,throw語句拋出的對象比較是java.lang.Throwable類或者子類的實例
Finally語句不被執行的唯一情況:
Sysem.exit(0);用於立即終止程序的運行
Finally裏System.out.println(“without execute”);不會被執行
因此System.out,.println(“execute”);也不被執行
運行時異常
RuntimeException類及其子類都成爲運行時異常。
特點:java編譯器不會檢查它
當程序可能出現異常,即使沒有try-catch或者throws,編譯也會通過
Return x/y;當y爲0,拋出ArithmeticException
區分運行時異常和受檢查異常
運行時異常表示無法讓程序恢復運行的異常(原因:通常是由於執行了錯誤的操作)
例如:出現數組越界,需要修改代碼,因此出現運行時異常,建議終止程序,java編譯器不檢查這種異常
受檢查異常表示程序可以處理的異常,如果拋出異常的方法本身不能處理它,那麼方法調用者應該去處理它,從而使程序恢復運行,不至於終止程序。
如果一個方法可能出現受檢查異常,要麼要try-catch語句捕獲,要麼用throws子句聲明將它拋出,否則會導致編譯錯誤
常見異常:
Arithmeticexception:數學異常
如:inta,b;
a=0;
b=50/a;
IndexOutOfBoundException:數組越界異常
如:public void addNum(int[] a){
Int b=0;
For(int i=0;i<=a.lenght;i++){
B=b+a[i];
}
}
便出現異常
NullPointerException:空指針異常
例如:
Date today=null;
System.out.println((today.toString()));
SQLException :SQL異常
例如:
Ps=con.prepareStatement(“select * from user where userid=?”);
Rs=ps.executeQuery();
獲取異常信息
Exception提供一些方法以便獲取異常信息
toString()
getMessage()
printStackTrace()
通過擴展Exception或其子類來創建自己的異常類