可能重复:在我输入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();
}
}
3 回答
Java没有提供自动方式 . 你可以使用布尔标志:
两个解决方案:两次调用
reportEndWorkflow
,一次在catch
块中,一次在try
结束时:或者你可以引入一个布尔变量:
你在那里是因为你的try-block已经完成了执行 . 是否抛出异常 .
要区分何时发生异常或方法流程执行是否成功完成,您可以尝试执行以下操作: