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-14 18:06:24 浏览: 38
这段代码的运行结果是:
```
Caught Exception1
Hello World!
```
代码中定义了两个异常类`Exception1`和`Exception2`,并在`main`方法中抛出了`Exception`。在`try`块中,先抛出了`Exception2`异常,然后在`catch`块中捕获了`Exception1`异常并打印信息,再将该异常抛出。由于`Exception1`是`Exception2`的父类,因此`catch`块中的代码被执行。最后,在`finally`块中打印"Hello World!"。
最终输出的结果是"Caught Exception1"和"Hello World!",因为`Exception1`被捕获并重新抛出,而`Exception2`则被正确捕获并结束程序。
相关问题
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。
public class MyException extends Exception { public MyException(String message) { super(message); } }public class ExceptionTest { public void test() throws MyException { throw new MyException("This is my custom exception."); } public static void main(String[] args) { ExceptionTest test = new ExceptionTest(); try { test.test(); } catch (MyException e) { System.out.println("Caught MyException: " + e.getMessage()); } } }代码解析
这段代码定义了一个自定义异常类`MyException`,它继承了`Exception`类。`MyException`类有一个构造函数,用于初始化异常信息。
另外,代码中还有一个`ExceptionTest`类,它有一个`test()`方法,该方法抛出了一个`MyException`异常。在`main()`方法中,我们创建了`ExceptionTest`对象,并调用了`test()`方法。由于`test()`方法声明了会抛出`MyException`异常,因此我们需要使用`try-catch`块捕获这个异常。如果`test()`方法抛出了`MyException`异常,`catch`块中的代码会被执行,输出异常信息。
最终运行结果为:
Caught MyException: This is my custom exception.
阅读全文