Java异常捕获之一道try-catch-finally语句题
今天,学习了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不是完全之策啊,还要继续深入理解啊。2017-06-1918:21:08