class MyException extends Exception { }
class Tire {
void doStuff() { } // #4
}
public class Retread extends Tire {
public static void main(String[] args) {
new Retread().doStuff();
}
// insert code here
System.out.println(7/0);
}
并给出以下四个代码片段:
void doStuff() {
void doStuff() throws MyException {
void doStuff() throws RuntimeException {
void doStuff() throws ArithmeticException {
当在第 10 行独立添加片段 1 - 4 时,哪些是正确的?(选择所有适用的。)
- A. 不会编译
- B. 他们都会编译
- C. 一些,但不是全部,将编译
- D. 所有编译的都会在运行时抛出异常
- E. 编译的都不会在运行时抛出异常
- F. 只有部分编译的会在运行时抛出异常
答案:C 和 D 是正确的。重写方法不能抛出比被重写方法抛出的更广泛的检查异常。但是,覆盖方法可能会抛出未被覆盖方法抛出的 RuntimeExceptions。A、B、E 和 Fare 基于上述不正确。(目标 2.4)
在这种情况下,我不明白 BoldItalic 标记在说什么。覆盖方法(#4)不会抛出任何异常,所以我们如何知道我们添加到覆盖方法(选项 2)中的那个(在本例中为 MyException)是否比覆盖方法更广泛。算术异常如何运行而没有错误。它如何不比覆盖方法中的不知道哪个异常更广泛。