throws和throw的區(qū)別
throws
- 用在方法聲明后面寓盗,跟的是異常類名
- 可以跟多個異常類名看疙,用逗號隔開
- 表示拋出異常饼煞,由該方法的調(diào)用者來處理
throw
- 用在方法體內(nèi)用爪,跟的是異常對象名
- 只能拋出一個異常對象名
- 表示拋出異常粉渠,由方法體內(nèi)的語句處理
finally關(guān)鍵字特定及作用
finally的特點
被finally控制的語句體一定會在try···catch···finally中執(zhí)行分冈。
特殊情況:在執(zhí)行到finally之前jvm退出了(比如System.exit(0))
finally的作用
用于釋放資源,在IO流操作和數(shù)據(jù)庫操作中會見到
final,finally和finalize的區(qū)別:雷鋒和雷峰塔的關(guān)系
final可以修飾類霸株,不能被繼承雕沉,修飾方法,不能被重寫去件,修飾變量坡椒,只能賦值一次
finally是try語句中的一個語句體扰路,不能單獨使用,用來釋放資源
finalize是一個方法倔叼,當(dāng)垃圾回收器確定不存在對該對象的更多引用時汗唱,由對象的垃圾回收器調(diào)用此方法
自定義異常
為什么需要自定義異常?
通過名字區(qū)分到底是神馬異常,有針對的解決辦法 ,例如:人的年齡
class AgeOutOfBoundsException extends Exception {
public AgeOutOfBoundsException() {
super();
}
public AgeOutOfBoundsException(String message) {
super(message);
}
}
異常注意事項:
- 子類重寫父類方法時丈攒,子類的方法必須拋出相同的異沉ㄗ铮或父類異常的子類。(父親壞了,兒子不能比父親更壞)
- 如果父類拋出了多個異常,子類重寫父類時,只能拋出相同的異逞惭椋或者是他的子集,子類不能拋出父類沒有的異常
- 如果被重寫的方法沒有異常拋出,那么子類的方法絕對不可以拋出異常,如果子類方法內(nèi)有異常發(fā)生,那么子類只能try,不能throws