java如何报错
Java 报错机制
在 Java 中,报错通常通过异常处理机制实现。异常分为检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)。以下是常见的报错方式:
抛出异常
使用 throw 关键字手动抛出异常:
if (input == null) {
throw new IllegalArgumentException("输入不能为空");
}
自定义异常
通过继承 Exception 或 RuntimeException 创建自定义异常类:
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
常见异常类型
NullPointerException 当尝试访问空对象的方法或属性时触发:

String str = null;
int length = str.length(); // 抛出 NullPointerException
ArrayIndexOutOfBoundsException 访问数组越界时触发:
int[] arr = new int[3];
int value = arr[5]; // 抛出 ArrayIndexOutOfBoundsException
ClassCastException 类型转换不当时触发:
Object obj = "Hello";
Integer num = (Integer) obj; // 抛出 ClassCastException
异常处理
try-catch 块 捕获并处理异常:

try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.err.println("除零错误: " + e.getMessage());
}
finally 块 无论是否发生异常都会执行的代码:
try {
// 可能抛出异常的代码
} finally {
System.out.println("清理资源");
}
日志记录
使用日志框架(如 SLF4J、Log4j)记录异常:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
try {
// 业务逻辑
} catch (Exception e) {
logger.error("发生错误", e);
}
断言
使用 assert 进行调试阶段的错误检查(需启用 -ea 参数):
assert x > 0 : "x 必须大于零";
最佳实践
- 对可恢复的错误使用检查型异常
- 对编程错误使用非检查型异常
- 避免捕获异常后不做任何处理
- 在异常消息中提供足够的信息
- 考虑使用更具体的异常类型而非通用的
Exception






