# 问题 和 练习

# Questions

  1. 以下代是否合法?

    try {
    
    } finally {
    
    }
    
    1
    2
    3
    4
    5

    答:合法的

  2. 以下处理程序可以捕获什么异常类型

    catch (Exception e) {
    
    }
    
    1
    2
    3

    答:几乎所有类型(除 Error 外)。但是这可能是一个糟糕的实现,因为你丢失了有关正在抛出的异常类型的有价值的信息。

  3. 这段异常处理程序是否有问题?编译会出错吗?

    try {
    
    } catch (Exception e) {
    
    } catch (ArithmeticException a) {
    
    }
    
    1
    2
    3
    4
    5
    6
    7

    答:广泛来看是没有问题的,编译不会出错, 但是有一个问题,第二个捕获永远都不会执行,这是一个不好的代码。 如果只是这样一段空代码的话,class 编译后,这端代码将不会看到,也就是被编译的时候忽略了。