MST
星途 面试题库

面试题:Java中自定义异常类如何实现及异常链的基本使用

请说明在Java中如何自定义一个异常类,并举例说明如何使用异常链将一个异常包装并抛出。请给出具体的代码示例。
32.1万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 自定义异常类: 在Java中自定义异常类,需要继承Exception类(如果是受检异常)或RuntimeException类(如果是非受检异常)。以下是一个自定义受检异常类的示例:
    public class MyCustomException extends Exception {
        public MyCustomException(String message) {
            super(message);
        }
    }
    
  2. 使用异常链包装并抛出异常: 异常链允许在捕获一个异常后,将其包装到另一个异常中,并抛出新的异常,保留原始异常的信息。以下是一个代码示例:
    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信息,这就是异常链的作用。