1. 程式人生 > >java捕獲到異常以後,後面的程式碼還會執行嗎?

java捕獲到異常以後,後面的程式碼還會執行嗎?

轉自:http://zhidao.baidu.com/link?url=BgAg2K6tQumyPRJyjIWCGEQe-knlVG-N67MUp1QoZyvkzvb7qZ3QpLz101rtAOqk7E1OD1mUXzbEJYOtFziP8AAvu7eX2huTAqD1FtnpHBK

return會執行的。
try{}裡面包含可能會出錯的程式碼?如果裡面出錯了,他回交給catch{}處理,catch可能把這個錯誤給遮蔽掉(就比如說你牙疼不能吃飯,給給力來個止疼的,不影響你做其他的事情了)。。不影響你之後的程式碼執行。。但是如果你try{}裡面有多行程式碼第一行,第二行,第三行,如果第二行出錯了,第三行是不執行的。如果有finally{}這裡裡面程式碼是處理後事的。比如說,你try裡面有操作
工作流
的,那麼如果出錯了fianlly可以用力處理,關閉工作流物件,避免浪費資源。finally{}是必須執行的,不是管是出錯了,還是不出錯。

try{//正常執行的程式碼}catch (Exception e){//出錯後執行的程式碼}finally{//無論正常執行還是出錯,之後都會執行的程式碼}//跟上面try catch無關的程式碼正常執行的程式碼如果出現異常,就不會執行出現異常語句後面的所有正常程式碼.異常可能會被捕獲掉,比如上面catch宣告的是捕獲Exception,那麼所有Exception包括子類都會被捕獲,但如Error或者是Throwable但又不是Exception(Exception繼承Throwable)就不會被捕獲.

如果異常被捕獲,就會執行catch裡面的程式碼.如果異常沒有被捕獲,就會往外丟擲,相當於這整個方法出現了異常.finally中的程式碼只要執行進了try catch永遠都會被執行.執行完finally中的程式碼,如果異常被捕獲就會執行外面跟這個try catch無關的程式碼.否則就會繼續往外丟擲異常.return無論在哪裡,只要執行到就會返回,但唯一一點不同的是如果return在try或者catch中,即使返回了,最終finally中的程式碼都會被執行.這種情況最常用的是打開了某些資源後必須關閉,比如打開了一個OutputStream,那就應該在finally中關閉,這樣無論有沒有出現異常,都會被關閉.