java如何自定义异常
自定义异常的基本步骤
在Java中自定义异常需要继承Exception类(检查型异常)或RuntimeException类(非检查型异常)。以下是具体实现方式:
定义检查型异常
public class CustomCheckedException extends Exception {
public CustomCheckedException(String message) {
super(message);
}
}
定义非检查型异常
public class CustomUncheckedException extends RuntimeException {
public CustomUncheckedException(String message) {
super(message);
}
}
添加额外功能
可以在自定义异常中添加额外属性和方法,增强异常的信息传递能力:
public class DatabaseException extends RuntimeException {
private final int errorCode;
public DatabaseException(String message, int errorCode) {
super(message);
this.errorCode = errorCode;
}
public int getErrorCode() {
return errorCode;
}
}
使用自定义异常
在代码中抛出和捕获自定义异常的方式与标准异常一致:
try {
if (invalidCondition) {
throw new CustomCheckedException("Something went wrong");
}
} catch (CustomCheckedException e) {
System.err.println("Caught exception: " + e.getMessage());
}
最佳实践
- 异常类名应以
Exception结尾,明确表明其用途 - 提供有意义的错误信息
- 对于可恢复的错误使用检查型异常
- 对于程序逻辑错误使用非检查型异常
- 考虑重载多个构造函数以适应不同场景
继承体系设计
复杂的异常体系可以通过继承层次来实现:

public class BaseApplicationException extends RuntimeException {
// 基础异常类
}
public class NetworkException extends BaseApplicationException {
// 网络相关异常
}
public class DatabaseException extends BaseApplicationException {
// 数据库相关异常
}






