異常
這是我老師的喜好:就是說一上來就拿一張圖給大家看看,過過癮-_-
這是一張:
異常分類圖
來,這里還有一張帶中文的常見異常截圖!!!
1:先來說說什么是異常吧:
其實就是"阻止當前方法或作用域繼續執行的問題"稱作異常.
異常又分為兩種:①編譯時異常 ②運行時異常.
就先說"編譯時異常"吧!!!!
也就是在代碼還未運行,編譯的代碼就爆出語法或其他的異常就稱之為編譯時異常;
再說"運行時異常"!!!
和編譯時異常剛剛相反,也就是在代碼已經運行,程序運行不了,從而爆出的異常;
2:Try-catch-finally之中的相關問題!!(摘抄)
情況1:
try{} catch(){}finally{} return;
顯然程序按順序執行。
情況2:
try{ return; }catch(){} finally{} return;
程序執行try塊中return之前(包括return語句中的表達式運算)代碼;
再執行finally塊,最后執行try中return;
finally塊之后的語句return,因為程序在try中已經return所以不再執行。
情況3:
try{ } catch(){return;} finally{} return;
程序先執行try,如果遇到異常執行catch塊,
有異常:則執行catch中return之前(包括return語句中的表達式運算)代碼,再執行finally語句中全部代碼,
最后執行catch塊中return. finally之后也就是4處的代碼不再執行。
無異常:執行完try再finally再return.
情況4:
try{ return; }catch(){} finally{return;}
程序執行try塊中return之前(包括return語句中的表達式運算)代碼;
再執行finally塊,因為finally塊中有return所以提前退出。
情況5:
try{} catch(){return;}finally{return;}
程序執行catch塊中return之前(包括return語句中的表達式運算)代碼;
再執行finally塊,因為finally塊中有return所以提前退出。
情況6:
try{ return;}catch(){return;} finally{return;}
程序執行try塊中return之前(包括return語句中的表達式運算)代碼;
有異常:執行catch塊中return之前(包括return語句中的表達式運算)代碼;
則再執行finally塊,因為finally塊中有return所以提前退出。
無異常:則再執行finally塊,因為finally塊中有return所以提前退出。
(不管有木有出現異常,finally塊中代碼都會執行,但是,,,,大家看到這個但是了嗎!
好接著說,但是當catach塊中調用了System.exit(1),那么finally塊將不再執行;
finally塊中最好不要有return,否則程序會提前退出)
新聞熱點
疑難解答