【发布时间】:2017-07-26 11:00:27
【问题描述】:
我正在使用核心 java 开发一个测试框架。在我的应用程序中,我有一个调用十个不同子方法的父方法,其中每个方法都可以抛出自己的异常。要求是提供有关父方法执行的详细日志信息,其中包含执行方法所花费的总时间、执行每个子方法所花费的时间、记录任何异常等信息。我为此使用了多个 try catch finally 块。
我的问题是,如果其中一个子方法引发异常,跳过执行剩余子方法的最佳方法是什么?例如:如果方法 4 抛出异常,我想记录该异常并走到最后并记录父方法在此之前所花费的时间。
我尝试在父方法的开头使用布尔变量将其初始化为 true。在执行每个子方法之前,我正在检查布尔变量是否为真。每当抛出异常时,我都会将布尔变量标记为 false。
我的伪代码如下所示:
public String parentMethod(){
boolean execute = true;
if(execute) {
try event1;
catch(Event1Exception e1)
log e1; execute = false;
finally log event 1 time taken;
}
if(execute) {
try event2;
catch(Event1Exception e2)
log e2; execute = false;
finally log event 2 time taken;
}
and so on ....
log total time taken;
在我的实际代码中,我有大约十个不同的事件,它们会抛出自己的异常,有时不止一个。使用这种方法,为每个捕获的异常分配 execute = false 然后再次检查 execute 的值似乎很笨拙。有没有比这更好的方法,不使用任何额外的插件?
【问题讨论】:
-
如果你有
for(...) { try { execute } catch { handle exception } }这样的东西,那么你可以很容易地做到这一点:try { for(...) { execute } catch { handle exception } }。
标签: java design-patterns