Java异常捕获之一道try-catch-finally语句题

Posted 长河落日圆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Java异常捕获之一道try-catch-finally语句题的主要内容,如果未能解决你的问题,请参考以下文章

6.3-全栈Java笔记:异常处理方法(上)

Java小技能:异常处理

java 主键异常怎么捕获

java捕获到异常后,异常后的语句不会被执行

我应该在 DAO 层捕获异常还是在服务层捕获异常?

如何分析,java 虚拟机异常崩溃 由系统捕获并生成的core文件