黑馬程序員 很重要的一個面試題

1: 編譯時異常和運行時異常的區別?


Java中的異常被分爲兩大類:
編譯時異常和運行時異常。
所有的RuntimeException類及其子類的實例被稱爲運行時異常,其他的異常就是編譯時異常
編譯時異常
Java程序必須顯示處理,否則程序就會發生錯誤,無法通過編譯
運行時異常
無需顯示處理,也可以和編譯時異常一樣處理




2:throw的概述以及和throws的區別?


解析他們是什麼?
throws:
定義功能方法時,需要把出現的問題暴露出來讓調用者去處理。那麼就通過throws在方法上標識。
例如
public static void method() throws ArithmeticException {
int x = 6;
int y = 2;//0;
System.out.println(x/y);
}

throw:
在功能方法內部出現某種情況,程序不能繼續運行,需要進行跳轉時,就用throw把異常對象拋出。
例如:
銀行ATM取錢
剩餘200塊
插卡--輸入密碼--取款--1000塊 -- ATM報錯(ATM中剩餘金額不足,請重新輸入)

int money = 1000;
if(money > 200) {
throw new ATM異常類("ATM中剩餘金額不足,請重新輸入");
}


他們的真正區別?

throws
用在方法聲明後面,跟的是異常類名
可以跟多個異常類名,用逗號隔開
表示拋出異常,由該方法的調用者來處理
throws表示出現異常的一種可能性,並不一定會發生這些異常
throw
用在方法體內,跟的是異常對象
只能拋出一個異常對象
表示拋出異常,由方法體內的語句處理
throw則是拋出了異常,執行throw則一定拋出了某種異常?

3: final,finally和finalize的區別?

final: 最終的意思
它修飾的類, 最終類,不能被其他類所繼承
它修飾的方法,最終方法, 子類不能重寫該方法
它修飾的變量,爲常量, 值不能改變

finally: try..catch..finally異常處理語句中的一部分
用來釋放資源, 如文件的關閉,對象設置爲null等操作

finalize: Object類中方法
當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章