class Exception1 extends Exception {} class Exception2 extends Exception1 {} public class Test { public static void main(String[] args) throws Exception { try { try { throw new Exception2(); } catch ( Exception1 a ) { System.out.println("Caught Exception1"); throw a; } } catch ( Exception2 s ) { System.out.println("Caught Exception2"); return ; } finally { System.out.println("Hello World!"); }}}
时间: 2024-02-15 07:28:25 浏览: 18
这段代码的输出结果是 "Caught Exception1" 和 "Hello World!"。代码中定义了两个自定义异常类Exception1和Exception2,Exception2是Exception1的子类。在main方法中,先在内部的try块中抛出一个Exception2异常,然后在内部的catch块中捕获Exception1异常,并打印"Caught Exception1",再将该异常抛出。最后在外部的catch块中捕获Exception2异常,并打印"Caught Exception2",然后通过return语句结束方法。不管是在内部的catch块中抛出异常,还是在外部的catch块中捕获异常,无论是否抛出异常,都会执行finally块中的代码,因此最终输出结果是"Caught Exception1"和"Hello World!"。
相关问题
class Exception1 extends Exception {} class Exception2 extends Exception1 {} public class Test { public static void main(String[] args) throws Exception { try { try { throw new Exception2(); } catch ( Exception1 a ) { System.out.println("Caught Exception1"); throw a; } } catch ( Exception2 s ) { System.out.println("Caught Exception2"); return ; } finally { System.out.println("H运行结果
运行结果为:Caught Exception1 Caught Exception2。
解析如下:
1. 在 try-catch 块中,内部的 try-catch 块抛出了 Exception2 异常,但是只有 Exception1 被捕获了,并且在 catch 块中打印了 "Caught Exception1",然后将 Exception1 抛出。
2. 外部的 catch 块捕获了 Exception2 异常,并打印了 "Caught Exception2",然后使用 return 语句结束了方法。
3. 在方法结束前,finally 块被执行,打印了 "Finally"。
因此,运行结果为:Caught Exception1 Caught Exception2 Finally。
package javafx; import javafx.application.Application; import javafx.scene.control.Button; import javafx.stage.Stage; public abstract class FXTest1 extends Application { @Override public void start(Stage primaryStage) throws Exception { Button btn = new Button(); btn.setText("Click me"); } public static void main(String[] args) { Application.launch(args); } }
这个代码似乎没有问题。但是,需要注意的是,FXTest1 是一个抽象类,如果没有在子类中实现抽象方法,那么子类也不能实例化。如果你想要使用 FXTest1,你需要创建一个子类,并且在子类中实现 FXTest1 中的抽象方法。例如:
```
package javafx;
public class MyFXTest extends FXTest1 {
@Override
public void start(Stage primaryStage) throws Exception {
super.start(primaryStage);
}
}
```
然后,你可以运行 MyFXTest 类的 main 方法来启动 JavaFX 应用程序。