异常处理原则
只捕获能处理的异常
不过度捕获异常
提供有意义的异常信息
记录日志而非直接输出
正确示例
try {
Integer.parseInt(str);
} catch (NumberFormatException e) {
logger.error("数字转换失败: " + str, e);
throw new BusinessException("请输入有效的数字", e);
}
反模式示例
try {
Integer.parseInt(str);
} catch (Exception e) {
e.printStackTrace();
}
异常链使用
try {
readConfig();
} catch (IOException e) {
throw new ConfigurationException("配置文件读取失败", e);
}
异常继承体系选择
| 场景 | 推荐继承 |
|---|---|
| 可恢复错误 | Exception(受检异常) |
| 编程错误 | RuntimeException(非受检异常) |
| 系统级错误 | Error(不捕获) |
小结
- 捕获具体异常,避免捕获所有异常
- 使用异常链保留原始异常信息
- 记录日志而不是直接输出堆栈
- 选择合适的异常继承体系