第三週:java面向物件部分總結(3)----異常
五、異常
1、什麼是異常
異常是指在程式的執行過程中所發生的不正常的事件,它會中斷正在執行的程式。
異常處理是在程式執行的過程中通過處理異常來讓程式完成後續的操作。
try{
可能產生異常的程式碼 ->可能產生一個異常物件
}catch(SubException e){
異常處理程式碼
}
catch(Exception e){
異常處理程式碼
}finally{
無論是否有異常都會執行的程式碼
}
2、幾種情況
1、未捕獲到異常,程式照常執行
2、有異常並且被捕獲,執行catch,程式照常執行
3、有異常未被捕獲,程式中斷
4、 多catch的情況,對於父類異常應該寫在子類異常的後面。否則會編譯報錯。
5、try…catch…finally的情況
Finally:無論是否發生異常都會執行的程式碼。
6、在方法中遇到return中的執行流程。
3、throws、throw關鍵字說明
Throws:用在方法宣告處,表示告知呼叫者此方法可能會產生異常
Throw:程式自行丟擲一個異常物件,一般會和throws結合起來一起使用。
public void setAge(int age) throws Exception{
if(age<0||age>120){
//程式自行丟擲一個異常
throw new Exception("年齡不合法");
}
this.age = age ;
}
}
4、自定義異常
編寫一個類繼承Exception
public class AgeException extends Exception{
public AgeException(){
super("年齡不合法");
}
}
使用的時候直接throw new AgeException即可
5、異常小結:
1、Java程式的執行過程中如出現異常,會自動生成一個異常類物件,該異常物件將被提交給Java執行時系統,這個過程稱為丟擲(throw)異常。
2、當Java執行時系統接收到異常物件時,會尋找能處理這一異常的程式碼並把當前異常物件交給其處理,這一過程稱為 捕獲(catch)異常
3、如果Java執行時系統找不到可以捕獲異常的方法,則執行時系統將終止,相應的Java程式也將退出。
程式設計師通常只能處理異常(Exception),而對錯誤(Error)無能為力。
4、不要在迴圈結構包裹try…catch塊
面試題:
1、關於finally關鍵字的執行順序
(1)只return;無返回值,那麼return最後執行
(2)return i;有返回值,按從上到下順序執行。
2、final,finally,finalize關鍵字區別
-
final
final關鍵字可以修飾類,屬性,方法
被final修飾的屬性必須進行初始化,初始化後屬性值不可更改。
被final修飾的方法只能使用,不能重寫
被final修飾的類,不能再被繼承
-
finally
finally是在異常處理時提供finally塊來執行任何清除操作。不管有沒有異常被丟擲、捕獲,finally塊都會被執行。
-
finalize
finalize是方法名。java技術允許使用finalize()方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。 (簡單瞭解)