Kev*_*vin 41 java exception try-catch-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();
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*nik 58
Java没有提供自动方式.你可以使用布尔标志:
boolean success = false;
try {
reportStartWorkflow();
doThis();
doThat();
workHarder();
success = true;
} finally {
if (!success) System.out.println("No success");
}
Run Code Online (Sandbox Code Playgroud)
两个解决方案:调用reportEndWorkflow两次,一次调用一次,一次调用catch结束try:
try {
// ...
reportEndWorkflow("success");
} catch (MyException ex) {
reportEndWorkflow("failure");
}
Run Code Online (Sandbox Code Playgroud)
或者你可以引入一个布尔变量:
boolean finished = false;
try {
// ...
finished = true;
} finally {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18145 次 |
| 最近记录: |