try,catch和finally
在 Java 中,try、catch 和 finally 是异常处理机制的核心部分。它们用于捕获、处理异常,并确保无论是否发生异常,某些代码都会被执行。下面是对它们的详细解释:
try块
try 块用于包含可能会抛出异常的代码。如果 try 块中的代码抛出了异常,程序会立即跳转到匹配的 catch 块进行处理。
1 | try{ |
try中的代码是你认为可能会发生异常的部分。例如,读取文件、连接数据库等操作可能会抛出异常。
catch块
catch 块用于捕获和处理异常。如果 try 块中的代码抛出了异常,程序会跳转到与异常类型匹配的 catch 块来处理这个异常。
1 | try { |
- 你可以有多个
catch块来处理不同类型的异常。catch块中传入的参数(如ExceptionType1 e1)是捕获到的异常对象,你可以通过它来访问异常的详细信息(如异常的消息、堆栈跟踪等)。 - 如果
try块抛出的异常类型与某个catch块中的异常类型匹配,那么该catch块将会被执行。
finally块
finally 块中的代码总会在 try-catch 执行完后执行,无论是否发生异常。这使得 finally 块非常适合用于清理资源、关闭流等操作。
1 | try { |
finally块中的代码不受是否发生异常的影响,无论try块中的代码是否抛出异常,finally块都会执行,除非程序被强制中断(如调用System.exit(),或者发生严重的错误)。finally常用于关闭资源(如文件流、数据库连接等),确保即使在出现异常时资源也能被正确释放。例子:
1
2
3
4
5
6
7
8
9try {
FileReader reader = new FileReader("somefile.txt");
// 处理文件
} catch (IOException e) {
System.out.println("文件操作失败: " + e.getMessage());
} finally {
// 确保文件流关闭
System.out.println("关闭文件流");
}
try-catch-finally 的完整流程
执行
try块:- 如果
try块中的代码没有抛出异常,catch块会被跳过,接着执行finally块。 - 如果
try块中的代码抛出了异常,程序会跳转到匹配的catch块执行,finally块会被执行。
- 如果
执行
catch块:- 如果有异常发生并且与某个
catch块中的异常类型匹配,该catch块会处理异常。多个catch块可以用来捕获不同类型的异常。
- 如果有异常发生并且与某个
执行
finally块:finally块会在try和catch完成后执行,无论是否发生异常。即使在try或catch块中调用了return语句,finally也会执行。
完整的语法实例:
1 | try { |
运行过程:
- 执行
try块,抛出ArithmeticException。 - 跳到
catch块,处理该异常。 - 无论是否发生异常,
finally块都将被执行。
总结:
try:用于包含可能抛出异常的代码。catch:用于捕获并处理异常。如果try块抛出异常,程序跳到合适的catch块处理异常。finally:用于包含必须执行的代码,通常用于资源清理或关闭文件等操作。它无论是否发生异常都会执行。
这种异常处理机制帮助开发者处理程序中可能出现的错误,并保证程序在发生错误时不会崩溃,还能执行一些必要的清理工作。
内容源于github用户11111-beep的Android学习笔记``
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Auroraの世界!




