我是java初学者,如果我确实犯了任何错误,请原谅我,欢迎提出建议,我很乐意听取我所犯的错误。提前感谢您阅读并回答我的问题。
我从某本书中得到以下代码
在代码中,抛出了新的异常,但代码仍然可以编译,另外还有一个类似于我正在粘贴的代码,但无法理解不同的行为
第一个代码打印 X 但根据我的说法,被覆盖的方法foo()
不应该抛出新的异常。其次,在调用方法foo
时,如果有子句,则应使用try
- :catch
throws
class X { public void foo() { System.out.print("X "); } }
public class SubB extends X {
public void foo() throws RuntimeException {
super.foo();
if (true) throw new RuntimeException();
System.out.print("B ");
}
public static void main(String[] args) {
new SubB().foo();
}
}
第二个代码与上面类似,但在此我们需要使用try
-catch
在调用方法时:
class A {
void foo() throws Exception { throw new Exception(); }
}
class SubB2 extends A {
void foo() { System.out.println("B "); }
}
class Tester {
public static void main(String[] args) {
A a = new SubB2();
a.foo();
}
}
在此异常中扩展了父类foo
方法,但在上面的代码中,异常在子类的foo
方法中。