throws和throw的區別
throws
- 用在方法聲明后面,跟的是異常類名
- 可以跟多個異常類名,用逗號隔開
- 表示拋出異常,由該方法的調用者來處理
throw
- 用在方法體內,跟的是異常對象名
- 只能拋出一個異常對象名
- 表示拋出異常,由方法體內的語句處理
finally關鍵字特定及作用
finally的特點
被finally控制的語句體一定會在try···catch···finally中執行。
特殊情況:在執行到finally之前jvm退出了(比如System.exit(0))
finally的作用
用于釋放資源,在IO流操作和數據庫操作中會見到
final,finally和finalize的區別:雷鋒和雷峰塔的關系
final可以修飾類,不能被繼承,修飾方法,不能被重寫,修飾變量,只能賦值一次
finally是try語句中的一個語句體,不能單獨使用,用來釋放資源
finalize是一個方法,當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法
自定義異常
為什么需要自定義異常?
通過名字區分到底是神馬異常,有針對的解決辦法 ,例如:人的年齡
class AgeOutOfBoundsException extends Exception {
public AgeOutOfBoundsException() {
super();
}
public AgeOutOfBoundsException(String message) {
super(message);
}
}
異常注意事項:
- 子類重寫父類方法時,子類的方法必須拋出相同的異常或父類異常的子類。(父親壞了,兒子不能比父親更壞)
- 如果父類拋出了多個異常,子類重寫父類時,只能拋出相同的異常或者是他的子集,子類不能拋出父類沒有的異常
- 如果被重寫的方法沒有異常拋出,那么子類的方法絕對不可以拋出異常,如果子類方法內有異常發生,那么子類只能try,不能throws