try catch 使用场景:
回顾:工作中需要捕获处理异常的场景:
例如:项目场景:自定义封装的JDBC连接方式中,创建数据库连接对象Connection用于业务CRUD,
每次使用完需要关闭数据库连接对象Connection的close()方法;
常用写法
注意:关闭流的地方在finally,因为代码最终一定会到finally:
为了复现业务代码出现的异常,这里使用除零异常
public class MainTest {
public static void main(String[] args) {
Connection connection = null;
try{
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8","root","123")
int i = 1/0;
Statement statement = connection.createStatement();
statement.execute(" SELECT 1 ");
} catch (SQLException e) {
System.out.println("业务代码发生异常");
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
System.out.println("关闭流失败");
e.printStackTrace();
}
}
}
}
缺点:需要手动去捕获关闭流,很容易忘记关闭则会无法回收资源
优雅写法(推荐):
public class MainTest2 {
public static void main(String[] args) {
try(Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8","root","123")) {
int i = 1/0;
Statement statement = connection.createStatement();
statement.execute(" SELECT 1 ");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
结果分析:
try里面代码块相当于局部变量,使用完就会自动去关闭释放资源
使用更少的代码,在不影响代码可读性,何乐而不为