可能重複:
Is it possible to detect if an exception occurred before I entered a finally block?在finally塊,我可以告訴大家,如果一個異常被拋出
我有做事的工作流的方法,並拋出如果一個異常發生了錯誤。我想將報告指標添加到我的工作流程中。在下面的finally代碼塊中,是否有任何方法可以判斷try/catch塊中的某個方法是否引發異常?
我可以添加我自己的catch/throw代碼,但寧願更乾淨的解決方案,因爲這是我在整個項目中重複使用的模式。
@Override
public void workflowExecutor() throws Exception {
try {
reportStartWorkflow();
doThis();
doThat();
workHarder();
} finally {
/**
* Am I here because my workflow finished normally, or because a workflow method
* threw an exception?
*/
reportEndWorkflow();
}
}
這個問題可能與所提出的問題重複,但很難說明,因爲另一個問題相當令人吃驚地錯綜複雜。在finally塊內確定塊是在正常的控制流程內執行還是由於拋出異常而執行的功能將非常有用,因爲它可以簡化事務處理;唉,Java和C#都不提供這種能力afaik。恥辱。 –