今天,學習了try-catch-finally語句,本來覺得蠻簡單、易懂的。搜了一道相關類型的題目。結果信心被潑了盆冷水。先把題Mark一下,出去透透風。
1 public class TestEx { 2 private int c; 3 4 public TestEx() { 5 } 6 7 @SuppressWarnings("finally") 8 boolean testEx() throws Exception { 9 boolean ret = true;10 try {11 ret = testEx1();12 } catch (Exception e) {13 System.out.println("testEx, catch exception");14 ret = false;15 throw e;16 } finally {17 System.out.println("testEx, finally; return value=" + ret);18 return ret;19 }20 }21 22 @SuppressWarnings("finally")23 boolean testEx1() throws Exception {24 boolean ret = true;25 try {26 ret = testEx2();27 if (!ret) {28 return false;29 }30 System.out.println("testEx1, at the end of try");31 return ret;32 } catch (Exception e) {33 System.out.println("testEx1, catch exception");34 ret = false;35 throw e;36 } finally {37 System.out.println("testEx1, finally; return value=" + ret);38 return ret;39 }40 }41 42 @SuppressWarnings("finally")43 boolean testEx2() throws Exception {44 boolean ret = true;45 try {46 int b = 12;47 for (int i = 2; i >= -2; i--) {48 setC(b / i);49 System.out.println("i=" + i);50 }51 return true;52 } catch (Exception e) {53 System.out.println("testEx2, catch exception");54 ret = false;55 throw e;56 } finally {57 System.out.println("testEx2, finally; return value=" + ret);58 return ret;59 }60 }61 62 public static void main(String[] args) {63 TestEx testException1 = new TestEx();64 try {65 testException1.testEx();66 } catch (Exception e) {67 e.printStackTrace();68 }69 }70 71 public int getC() {72 return c;73 }74 75 public void setC(int c) {76 this.c = c;77 }78 }
Output:
#看完之後我就在想,
1.Java異常處理機制,我真的理解了嗎?
2.Java異常處理,我真的掌握了嗎?
3.catch體裡遇到return 是怎麼處理?
4.finally 體裡有return怎麼處理?
5. catch 和 finally 體內同時遇上 return 怎麼辦?
6.是不是還有個System.exit()?遇到它又咋辦? ?
7.僅僅知道throws不是完全之策啊,還要繼續深入理解啊。
以上是Java異常捕獲講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!