boolean ranAction = false;
try {
final Runnable command = barrierCommand;
if (command != null)
command.run();
ranAction = true;
nextGeneration();
return 0;
} finally {
if (!ranAction)//通过“try-finally和ranAction布尔标识”,做到这样的效果:如果command.run();抛出异常,则执行 breakBarrier(),但不阻碍异常的如常抛出
breakBarrier();
}
这里的技巧是: 通过“try-finally和ranAction布尔标识”,做到这样的效果:如果command.run();抛出异常,则执行 breakBarrier(),但不阻碍异常的如常抛出。
如果不这样做,比较一般的做法是:
try{
command.run();
......
}catch(Throwable e){
breakBarrier();
throw e; //或throw new RuntimeException(e.getMessage(), e.getCause() );
}
本文介绍了如何使用try-finally结构结合布尔标识ranAction来确保在运行某个命令时,即使发生异常也能执行特定的操作,并且不阻碍异常的正常抛出。这种做法避免了传统try-catch块中异常处理与特定业务逻辑混杂的问题,提供了一种更清晰的错误处理方式。
3165

被折叠的 条评论
为什么被折叠?



