java – 发现是否在try-finally块的最后部分抛出异常

我有一个简单的问题代码的简单部分,一些基本的try-finally块:

try {
  // Some code which can throw an Exception
} finally {
  // Some code which also can throw an Exception
}

我的主要问题是:我们有什么方法可以发现在finally块中抛出Exception而不使用catch和一些局部变量在块之间传递信息?

我几乎没有这种情况有用,我不想添加一些丑陋的不必要的catch块来设置一些变量并再次抛出异常.第一个例子是,如果我在一些Spring或容器管理的事务方法中,并且在try块中发生异常.在这种情况下,我需要最终创建新的事务以使用数据库.第二个例子是我不希望我的原始异常被在finally块中抛出的异常掩盖,但如果没有异常,我将从最终抛出它(如果有的话).

我知道这一切都可以用catch来完成,但还有其他任何方式,Java中的一些元数据或其他什么?如果我们可以假设这将在一个线程中执行,那么它可能会有所帮助,所以也许有一些方法可以发现与当前线程绑定的异常?

最佳答案
这让我长期受挫.

我通常在顶部声明变量exceptionThrown = true,并在返回之前将其设置为false.然后你可以在finally处理程序中测试它.我认为这比捕捉和重新投掷更好,因为后一种方法会破坏堆栈跟踪.

我很惊讶Java和C#都没有更好的方法来处理它

转载注明原文:java – 发现是否在try-finally块的最后部分抛出异常 - 代码日志