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

原文地址:https://www.cnblogs.com/1693977889zz/p/7049920.html