当前位置: 首页 > 面试题库 >

在finally块中引发异常

周峻
2023-03-14
问题内容

有没有一种优雅的方法来处理finally块中引发的异常?

例如:

try {
  // Use the resource.
}
catch( Exception ex ) {
  // Problem with the resource.
}
finally {
   try{
     resource.close();
   }
   catch( Exception ex ) {
     // Could not close the resource?
   }
}

如何避免在try/ catchfinally块?


问题答案:

我通常这样做:

try {
  // Use the resource.
} catch( Exception ex ) {
  // Problem with the resource.
} finally {
  // Put away the resource.
  closeQuietly( resource );
}

别处:

protected void closeQuietly( Resource resource ) {
  try {
    if (resource != null) {
      resource.close();
    }
  } catch( Exception ex ) {
    log( "Exception during Resource.close()", ex );
  }
}


 类似资料:
  • 问题内容: 通常,我会遇到必须吞下/ 块中清理代码所引发的异常以防止原始异常被吞咽的情况。 例如: 假设记录任何异常不是方法块范围内的选项,而是由调用and 方法的代码完成。 吞没和方法抛出的异常是一个好主意吗?如果没有,什么是处理上述情况的更好方法,以免吞下异常? 问题答案: 我不喜欢捕捉和抛出异常。 如果你抓住它,做 一些 与它-即使它只是记录例外。 如果您不能执行任何操作,请不要捕获它-在方

  • 问题内容: 在大学里有关Java的问题中,有以下代码片段: 我被要求提供其输出。我回答了,但是正确答案是。为什么会这样呢?我只是不明白MyExc2去哪了。 问题答案: 通过阅读你的答案并了解你可能的想法,我相信你认为“进行中的例外”具有“优先权”。记住: 当一个新的异常被抛出到一个catch块或将要传播到该块之外的finally块中时,当新的异常向外传播时,当前异常将被中止(并被遗忘)。与其他任何

  • 所以,场景是我正在做一些数据库操作,最后提交/回滚,然后连接关闭。但是连接关闭也会抛出SQLException。 在这种情况下,最好的方法是什么? 捕获并记录它。 捕获并抛出异常,以便调用函数可以处理它 在#1的情况下,调用函数永远不会知道出了问题。

  • 我正尝试在类的方法中使用(以支持拖放)。我想显示我拖动的文件的导入进度。然而,它并不起作用。我不明白问题是什么,或者是什么引起的。 例外情况:

  • 假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,该怎么做呢?这可以使用finally块来完成。注意,在一个try块下,你可以同时使用except从句和finally块。如果你要同时使用它们的话,需要把一个嵌入另外一个。 使用finally 例13.3 使用finally #!/usr/bin/python # Filename: finally.py importtime tr

  • 问题内容: 在Java中,是否有一种优雅的方法可以在运行finally块之前检测是否发生了异常?在处理“ close()”语句时,通常需要在finally块中进行异常处理。理想情况下,我们希望维护两个异常并向上传播它们(因为它们都可能包含有用的信息)。我能想到的唯一方法是在try- catch-finally范围之外有一个变量,以保存对引发的异常的引用。然后将“保存的”异常与在finally块中发