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