我們知道,try負責圈定可能會出異常的代碼;catch負責處理try中可能異常的處理,如記錄錯誤日志,使業(yè)務能夠正常運行;finally負責資源釋放等善后工作,無論有無異常都必須要執(zhí)行的代碼,一般都是放在finally中的。如果catch和finally也會出現(xiàn)異常,那么會是什么效果呢?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
try { // java.lang.ArithmeticException int a = 1 / 0 ; } catch (Exception e) { System.out.println( "catch" ); // java.lang.NullPointerException String value = null ; System.out.println(value.length()); } finally { System.out.println( "finally" ); // java.lang.ArrayIndexOutOfBoundsException int [] array = { 1 , 2 , 3 }; System.out.println(array[ 6 ]); } |
這段代碼最終的執(zhí)行結果是:會拋出ArrayIndexOutOfBoundsException。try中代碼出現(xiàn)異常,會執(zhí)行對應的catch;
catch出現(xiàn)異常,會執(zhí)行finally;如果finally也出現(xiàn)異常,由于沒有進行處理,就會直接拋給JVM。如果這里沒有使用
finally塊,那么會拋出NullPointerException。
這也就是說:catch和finally中出現(xiàn)的異常也會直接拋出,如果我們沒有進行處理,就會在運行時產生錯誤。這提醒我們,如果catch和finally也可能出現(xiàn)異常,那么必須要再次使用try-catch進行處理。
以上這篇java中使用try-catch-finally一些值得注意的事(必看)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。