面试题答案
一键面试- 自定义异常类:
在Java中自定义异常类,需要继承
Exception
类(如果是受检异常)或RuntimeException
类(如果是非受检异常)。以下是一个自定义受检异常类的示例:public class MyCustomException extends Exception { public MyCustomException(String message) { super(message); } }
- 使用异常链包装并抛出异常:
异常链允许在捕获一个异常后,将其包装到另一个异常中,并抛出新的异常,保留原始异常的信息。以下是一个代码示例:
在上述代码中,public class ExceptionChainExample { public static void main(String[] args) { try { performTask(); } catch (MyCustomException e) { e.printStackTrace(); } } public static void performTask() throws MyCustomException { try { // 模拟可能抛出其他异常的操作 int result = 10 / 0; } catch (ArithmeticException e) { // 使用异常链包装异常并抛出 throw new MyCustomException("操作过程中发生错误", e); } } }
MyCustomException
是自定义的受检异常类。在performTask
方法中,首先尝试执行可能抛出ArithmeticException
的操作(这里是10 / 0
)。当捕获到ArithmeticException
时,使用异常链将其包装到MyCustomException
中并抛出。在main
方法中捕获MyCustomException
并打印堆栈跟踪信息,从堆栈跟踪中可以看到原始的ArithmeticException
信息,这就是异常链的作用。