背景介紹:
在用到j(luò)ava的一些類庫(kù)時(shí),會(huì)發(fā)現(xiàn)有些類庫(kù)用的時(shí)候必須要加上try-catch或者throw的關(guān)鍵詞。
抽象化描述這個(gè)問題:
問題抽象:
1 類庫(kù)地作者可以檢測(cè)出運(yùn)行中出現(xiàn)地問題,但是不知道怎么處理這個(gè)問題。
2 使用這個(gè)類庫(kù)地用戶知道怎么怎么去處理這個(gè)問題,但是不知道怎么檢測(cè)他們
解決:
異常(exception)的作用就是解決這個(gè)問題。
1如果一個(gè)方法不能決定怎么處理程序中非正常流程出現(xiàn)的問題,那么它可以把這個(gè)問題丟(throw)給調(diào)用者來處理。
2 如果調(diào)用者不愿意處理那么可以繼續(xù)丟(throw)給下個(gè)調(diào)用者,或者如果愿意處理這個(gè)問題 那么就接收(catch)這個(gè)
問題,然后進(jìn)行處理。
java異常hierarchy

1 注意:我們所關(guān)注的異常是指非error和runtime的異常,也即checkedException(可以被編譯器檢測(cè)的異常)
2 error通常是指無法恢復(fù)的錯(cuò)誤,比如超過系統(tǒng)性能的上界。這個(gè)error是由系統(tǒng)拋出的。
3 RuntimeException是由程序員代碼的問題 比如空指針
具體操作:
java中的checkedException是個(gè)對(duì)象。
所以拋出異常時(shí),需要先選定合適的異常種類,然后生成實(shí)例拋出
try { // code } catch (ExceptionType e) { // exception handling code } 運(yùn)行流程:
當(dāng)代碼遇到異常時(shí),它會(huì)忽略其后的代碼,直接跳到其相應(yīng)的catch中運(yùn)行
完整的實(shí)例:
除0異常處理
public class JavaExceptionTest { public static void main(String[] args) { // TODO Auto-generated method stub try { double a=1/0; } catch(ArithmeticException e) { System.out.PRintln(e.getMessage()); } }}java的異常類別:
http://www.tutorialspoint.com/java/java_builtin_exceptions.htm
java 異常教學(xué)文檔
http://docs.Oracle.com/javase/tutorial/essential/exceptions/index.html
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注