这段代码的返回值在出现异常和不出现异常的情况下,分别应该是多少?

  • 问:这段代码的返回值在出现异常和不出现异常的情况下,分别应该是多少?《深入理解Java虚拟机(第3版)》代码清单6-5
    public int inc() {
        int x;
        try {
            x = 1;
            return x;
        } catch (Exception e) {
            x = 1;
            return x;
        } finally {
            x = 3;
        }
    }

答:从Java代码的语义上讲,这三条执行路径分别为:

  1. 如果try语句块中出现属于Exception或其子类的异常,转到catch语句块处理;
  2. 如果try语句块中出现不属于Exception或其子类的异常,转到finally语句块处理;
  3. 如果catch语句块中出现任何异常,转到finally语句块处理。

如果没有出现异常,返回值是1;如果出现了Exception异常,返回值是2;如果出现了Exception以外的异常,方法非正常退出,没有返回值。

猜你喜欢

转载自www.cnblogs.com/cag2050/p/12427712.html