易百教程

149、以下 Java 程序的输出是什么?

public class Calculation {

    int a;

    public Calculation(int a) {
        this.a = a;
    }

    public int add() {
        a = a + 10;
        try {
            a = a + 10;
            try {
                a = a * 10;
                throw new Exception();
            } catch (Exception e) {
                a = a - 10;
            }
        } catch (Exception e) {
            a = a - 10;
        }
        return a;
    }

    public static void main(String args[]) {
        Calculation c = new Calculation(10);
        int result = c.add();
        System.out.println("result = " + result);
    }
}

运行结果:

result = 290

解释:类 Calculation 的实例变量 a 使用在实例化类时调用的类构造函数初始化为 10。 调用 add 方法返回一个整数值结果。 在 add() 方法中,a 增加 1020。然后,在第一个 try 块中,a 再次增加 1030。在第二个 try 块中,a 乘以 10300。第二个 try 块抛出异常,该异常被与 try 块关联的 catch 块捕获。 catch 块再次更改 a 的值,将其减 10 以使其变为 290。因此 add() 方法返回 290,它被分配给 result。 但是,与最外面的 try 块关联的 catch 块永远不会被执行,因为这个 catch 块没有可以处理的异常。