我有一个简单的问题,一个简单的代码部分,一些基本的try-finally
块:
try {
// Some code which can throw an Exception
} finally {
// Some code which also can throw an Exception
}
Run Code Online (Sandbox Code Playgroud)
我的主要问题是:我们有什么方法可以发现是否在finally
块中抛出异常而不使用catch
和一些局部变量在块之间传递信息?
我几乎没有什么情况可以使用,我不想添加一些丑陋的不必要的catch
块来设置一些变量throw Exception
.第一个例子是,如果我在某些Spring或容器管理的事务方法中,并且在try
块中Exception
发生了.finally
在这种情况下,我需要创建新的事务来处理数据库.第二个例子是我不希望我的原始Exception
被块Exception
抛出掩盖finally
,但如果没有Exception
我会抛出它finally
(如果有的话).
我知道这一切都可以完成,catch
但有没有其他方式,Java中的一些元数据或其他任何东西?如果我们可以假设这将在一个中执行Thread
,那么它可能会有所帮助,所以也许有一些方法可以发现与当前有关的异常Thread
?
这让我长期受挫.
我通常在顶部声明变量exceptionThrown = true,并在返回之前将其设置为false.然后你可以在finally处理程序中测试它.我认为这比捕捉和重新投掷更好,因为后一种方法会破坏堆栈跟踪.
我很惊讶Java和C#都没有更好的方法来处理它
归档时间: |
|
查看次数: |
1347 次 |
最近记录: |