这里推荐一个着重说明Java运行时异常和检查型异常的博客:
try-catch-finally
介绍
是Java语言的基础异常处理机制。自从Java的初始版本开始,它就一直是处理运行时异常和错误的标准方式。
代码块说明
try
块:包含可能会抛出异常的代码catch
块:用于捕获并处理这些异常finally
块:(如果存在)则无论是否发生异常都会执行
try-catch必须同时存在,是异常捕获和处理的基本结构。finally块是一个可选的,finally块中的代码总是会被执行,通常用于执行清理操作,如关闭文件或数据库连接。
示例:
BufferedReader reader = null;
try {
// 可能会抛出异常的代码
reader = new BufferedReader(new FileReader("file.txt"));
// 使用reader读取文件的代码
} catch (IOException e) {
// 处理IOException
e.printStackTrace();
} finally {
// 无论是否发生异常,这里的代码都会被执行
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
// 处理close时可能发生的异常
e.printStackTrace();
}
}
}
try-with-resources
介绍
也称(也称为ARM块,即Automatic Resource Management),是为了简化资源管理(旨在提供一种优雅的方式来管理资源),确保在try
语句块执行完毕后,自动关闭实现了AutoCloseable
或Closeable
接口的资源。try-with-resources是在Java 7(也称为Java SE 7或1.7版)中引入的。
代码块说明
try-with-resources语句允许你在try语句的括号中声明一个或多个资源,当try语句块执行完毕时(无论是正常结束还是由于异常而退出),这些资源都会自动关闭。这使得开发者无需在finally块中显式调用资源的close方法,这使得代码更简洁,也减少了出错的可能性。
示例:
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
// 使用reader读取文件的代码
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 当try块结束时,reader将自动关闭
} catch (IOException e) {
// 处理IOException
e.printStackTrace();
}
总结
Java中的try-with-resources语句可以被视为对try-catch-finally语句在资源管理方面的补充和优化。try-with-resources语句是在Java 7中引入的,旨在简化资源(如文件句柄、网络连接、数据库连接等)的管理,并确保它们在使用后能够被正确地关闭。