# 问题 和 练习
# Questions
以下代是否合法?
try { } finally { }
1
2
3
4
5答:合法的
以下处理程序可以捕获什么异常类型
catch (Exception e) { }
1
2
3答:几乎所有类型(除 Error 外)。但是这可能是一个糟糕的实现,因为你丢失了有关正在抛出的异常类型的有价值的信息。
这段异常处理程序是否有问题?编译会出错吗?
try { } catch (Exception e) { } catch (ArithmeticException a) { }
1
2
3
4
5
6
7答:广泛来看是没有问题的,编译不会出错, 但是有一个问题,第二个捕获永远都不会执行,这是一个不好的代码。 如果只是这样一段空代码的话,class 编译后,这端代码将不会看到,也就是被编译的时候忽略了。