try {
// 可能抛出异常的代码
riskyOperation();
} catch (SpecificException e) {
// 处理特定类型的异常
logger.error("操作失败", e);
} finally {
// 无论是否发生异常都会执行的代码
cleanupResources();
}
FileInputStream fis = null; try {
fis = new FileInputStream("config.properties");
// 处理文件内容
processConfig(fis);
} catch (IOException e) {
logger.error("配置文件读取失败", e);
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
logger.warn("文件关闭时发生异常", e);
}
}
}
public void testExecutionOrder() {
try {
System.out.println("try块开始执行");
int result = 10 / 0; // 这里会抛出异常
System.out.println("这行不会执行");
} catch (ArithmeticException e) {
System.out.println("catch块捕获到异常");
} finally {
System.out.println("finally块始终执行");
}
}
public void riskyOperation() {
Connection conn = null;
try {
conn = getConnection();
// 执行数据库操作
executeUpdate(conn);
} catch (SQLException e) {
log.error("数据库操作失败", e);
} finally {
try {
if (conn != null) {
conn.close(); // 这里也可能抛出SQLException
}
} catch (SQLException closeEx) {
log.error("关闭连接时出错", closeEx);
}
}
}