java 如何抛异常
抛出异常的方法
在 Java 中,可以通过 throw 关键字手动抛出异常。抛出异常通常用于在程序运行过程中遇到不符合预期的情况时终止当前流程。
throw new ExceptionType("异常信息");
抛出检查型异常
检查型异常(Checked Exception)需要在方法签名中声明或捕获。例如 IOException、SQLException 等。
public void readFile(String path) throws IOException {
if (!new File(path).exists()) {
throw new IOException("文件不存在: " + path);
}
// 其他逻辑
}
抛出非检查型异常
非检查型异常(Unchecked Exception)不需要在方法签名中声明。例如 NullPointerException、IllegalArgumentException 等。
public void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年龄不能为负数");
}
this.age = age;
}
自定义异常
可以通过继承 Exception 或 RuntimeException 创建自定义异常类。
public class MyCustomException extends RuntimeException {
public MyCustomException(String message) {
super(message);
}
}
使用时直接抛出:
throw new MyCustomException("自定义异常信息");
异常链
可以通过构造函数将底层异常传递给上层异常,形成异常链。
try {
// 可能抛出异常的代码
} catch (IOException e) {
throw new MyCustomException("操作失败", e);
}
最佳实践
- 对于可恢复的错误使用检查型异常
- 对于程序错误使用非检查型异常
- 提供有意义的异常信息
- 避免过度使用异常控制流程
- 在高性能场景考虑使用错误码代替异常







