MST
星途 面试题库

面试题:Java异常处理机制之高级难度:自定义异常及应用

在Java中,创建一个自定义异常类`MyBusinessException`,该异常类继承自`Exception`。然后编写一个方法`processData`,在该方法中根据特定业务逻辑(例如数据不符合某种规则)抛出`MyBusinessException`。接着编写主程序调用`processData`方法,并适当地捕获和处理`MyBusinessException`异常,同时说明自定义异常在实际项目中的应用场景。
46.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
class MyBusinessException extends Exception {
    public MyBusinessException(String message) {
        super(message);
    }
}

public class ExceptionDemo {
    public static void processData(int data) throws MyBusinessException {
        if (data < 0) {
            throw new MyBusinessException("数据不能为负数");
        }
        System.out.println("数据处理成功: " + data);
    }

    public static void main(String[] args) {
        int testData = -5;
        try {
            processData(testData);
        } catch (MyBusinessException e) {
            System.out.println("捕获到自定义异常: " + e.getMessage());
        }
    }
}

自定义异常在实际项目中的应用场景:

  1. 业务规则校验:在业务逻辑层,当用户输入的数据不符合特定业务规则时,例如订单金额不能为负数、用户名长度必须在特定范围等,可以抛出自定义异常,便于统一处理和给出友好的错误提示。
  2. 模块间异常传递:不同模块间通过抛出和捕获自定义异常来明确模块之间的交互问题。例如,数据访问层(DAO)在执行数据库操作时,若遇到特定数据库约束问题(如唯一键冲突),可以抛出自定义异常传递给业务逻辑层,业务逻辑层根据该异常做出相应处理,如提示用户重新输入。
  3. 区分系统异常和业务异常:将自定义业务异常与系统运行时异常(如NullPointerException等)区分开来,有助于更好地定位和处理问题。业务异常通常是由于业务规则违反导致的,而系统异常可能是代码逻辑错误或环境问题,分开处理能提高系统的健壮性和可维护性。