Java try catch finally语句

  • 内容
  • 评论
  • 相关

在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行。例如,程序在 try 块里打开了一些物理资源(如数据库连接、网络连接和磁盘文件等),这些物理资源都必须显式回收。

Java的垃圾回收机制不会回收任何物理资源,垃圾回收机制只回收堆内存中对象所占用的内存。

所以为了确保一定能回收 try 块中打开的物理资源,异常处理机制提供了 finally 代码块,并且 Java 7 之后提供了自动资源管理(Automatic Resource Management)技术。

finally 语句可以与前面介绍的 try catch 语句块匹配使用,语法格式如下:

try {
    // 可能会发生异常的语句
} catch(ExceptionType e) {
    // 处理异常语句
} finally {
    // 清理代码块
}

对于以上格式,无论是否发生异常(除特殊情况外),finally 语句块中的代码都会被执行。此外,finally 语句也可以和 try 语句匹配使用,其语法格式如下:

try {
    // 逻辑代码块
} finally {
    // 清理代码块
}

使用 try-catch-finally 语句时需注意以下几点:

  1. 异常处理语法结构中只有 try 块是必需的,也就是说,如果没有 try 块,则不能有后面的 catch 块和 finally 块;
  2. catch 块和 finally 块都是可选的,但 catch 块和 finally 块至少出现其中之一,也可以同时出现;
  3. 可以有多个 catch 块,捕获父类异常的 catch 块必须位于捕获子类异常的后面;
  4. 不能只有 try 块,既没有 catch 块,也没有 finally 块;
  5. 多个 catch 块必须位于 try 块之后,finally 块必须位于所有的 catch 块之后。
  6. finally 与 try 语句块匹配的语法格式,此种情况会导致异常丢失,所以不常见。

一般情况下,无论是否有异常拋出,都会执行 finally 语句块中的语句,执行流程如图 1 所示。


图 1  try catch finally 语句执行流程图

本文标题:Java try catch finally语句

本文地址:http://www.hosteonscn.com/3416.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注