Java異常捕獲之一道try-catch-finally語句題
阿新 • • 發佈:2017-06-19
span pri div system 處理機 out nal exception for
今天,學習了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"); 31return 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不是完全之策啊,還要繼續深入理解啊。2017-06-1918:21:08
Java異常捕獲之一道try-catch-finally語句題