• 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

  • 相关阅读:
    Android屏幕适配全攻略(最权威的官方适配指导)--转
    Android实现全屏的三种方式
    Mysql锁(翻译)
    mysql5.6主从配置
    jvm加载类(更新中)
    如何定位jdk中的native方法源码?
    光学字符识别OCR-2
    光学字符识别OCR
    关于freetype在安装中的遇到的问题
    锚点链接
  • 原文地址:https://www.cnblogs.com/1693977889zz/p/7049920.html
Copyright © 2020-2023  润新知