java异常如何使用
Java异常的基本概念
Java异常是程序运行时发生的非正常情况,分为检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)。检查型异常需显式处理(如IOException),非检查型异常包括运行时异常(如NullPointerException)和错误(如OutOfMemoryError)。

异常处理机制
Java通过try-catch-finally块处理异常:

try {
// 可能抛出异常的代码
FileInputStream file = new FileInputStream("test.txt");
} catch (FileNotFoundException e) {
// 捕获特定异常
System.err.println("文件未找到: " + e.getMessage());
} catch (Exception e) {
// 捕获更通用的异常
System.err.println("其他错误: " + e);
} finally {
// 无论是否发生异常都会执行
System.out.println("资源清理");
}
抛出异常
通过throw主动抛出异常,或在方法声明中使用throws标记可能抛出的异常:
public void readFile(String path) throws FileNotFoundException {
if (!new File(path).exists()) {
throw new FileNotFoundException("路径无效");
}
// 其他逻辑
}
自定义异常
继承Exception或RuntimeException创建自定义异常:
public class CustomException extends RuntimeException {
public CustomException(String message) {
super(message);
}
}
// 使用
throw new CustomException("自定义错误");
最佳实践
- 精准捕获:优先捕获具体异常,避免直接捕获
Exception。 - 资源管理:使用
try-with-resources自动关闭资源(实现AutoCloseable接口的类):try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) { String line = br.readLine(); } catch (IOException e) { e.printStackTrace(); } - 避免空指针:使用
Optional或提前判空减少NullPointerException。 - 日志记录:使用日志框架(如SLF4J)记录异常信息而非直接打印堆栈。
常见异常类型
NullPointerException:对象未初始化时调用方法或属性。ArrayIndexOutOfBoundsException:数组越界访问。ClassCastException:类型强制转换错误。IllegalArgumentException:方法接收到非法参数。
通过合理使用异常处理机制,可以增强程序的健壮性和可维护性。






