1. 基本的 try-catch 结构
try {
// 可能抛出异常的代码
} catch (ExceptionType1 e) {
// 处理 ExceptionType1 类型的异常
}
2. 带 finally 的 try-catch 结构
try {
// 可能抛出异常的代码
} catch (ExceptionType1 e) {
// 处理 ExceptionType1 类型的异常
} finally {
// 无论是否发生异常,都会执行的代码
}
3. 多个 catch 块
try {
// 可能抛出异常的代码
} catch (ExceptionType1 e) {
// 处理 ExceptionType1 类型的异常
} catch (ExceptionType2 e) {
// 处理 ExceptionType2 类型的异常
} finally {
// 无论是否发生异常,都会执行的代码
}
4. 使用多异常捕获(Java 7 及以上版本)
从 Java 7 开始,可以在一个 catch 块中捕获多个异常类型:
try {
// 可能抛出异常的代码
} catch (ExceptionType1 | ExceptionType2 e) {
// 处理 ExceptionType1 或 ExceptionType2 类型的异常
} finally {
// 无论是否发生异常,都会执行的代码
}
5. 只有 try-finally 结构
如果你不需要捕获任何异常,但需要确保某些代码在 try 块执行完毕后总是执行,可以使用 try-finally 结构:
try {
// 可能抛出异常的代码
} finally {
// 无论是否发生异常,都会执行的代码
}
6. 资源管理(Java 7 及以上版本:Try-with-resources)
从 Java 7 开始,引入了 try-with-resources 语句,用于自动管理资源(如文件、网络连接等),这些资源实现了 AutoCloseable 接口:
try (ResourceType resource = new ResourceType()) {
// 使用资源的代码
} catch (ExceptionType1 e) {
// 处理 ExceptionType1 类型的异常
} finally {
// 无论是否发生异常,都会执行的代码
}
总结来说,try-catch-finally 的写法主要取决于你是否需要捕获异常、处理多个异常类型、确保某些代码总是执行,以及是否需要管理资源。根据实际需求选择合适的结构。