非顺序任务中的Java异常处理(模式/良好实践)
有些任务不应该并行完成(例如打开文件、读取、写入和关闭,这是有顺序的…)
但是。。。有些任务更像是购物清单,我的意思是他们可以有一个理想的订单,但这不是必须的。。例如通信或加载独立驱动程序等
对于这种任务, 我想知道管理异常的java最佳实践或模式
java的简单方法是:
getUFO {
try {
loadSoundDriver();
loadUsbDriver();
loadAlienDetectorDriver();
loadKeyboardDriver();
} catch (loadSoundDriverFailed) {
doSomethingA;
} catch (loadUsbDriverFailed) {
doSomethingB;
} catch (loadAlienDetectorDriverFailed) {
doSomethingC;
} catch (loadKeyboardDriverFailed) {
doSomethingD;
}
}
但是,如果在其中一个动作中出现异常,但又想 尝试下一个吗
我曾想过这种方法,但似乎不适合用于异常 我不知道它是否有效,没关系,它真的很糟糕
getUFO {
Exception ex=null;
try {
try{ loadSoundDriver();
}catch (Exception e) { ex=e; }
try{ loadUsbDriver();
}catch (Exception e) { ex=e; }
try{ loadAlienDetectorDriver();
}catch (Exception e) { ex=e; }
try{ loadKeyboardDriver()
}catch (Exception e) { ex=e; }
if(ex!=null)
{ throw ex;
}
} catch (loadSoundDriverFailed) {
doSomethingA;
} catch (loadUsbDriverFailed) {
doSomethingB;
} catch (loadAlienDetectorDriverFailed) {
doSomethingC;
} catch (loadKeyboardDriverFailed) {
doSomethingD;
}
}
找到更好的练习似乎并不复杂。。我还是没有
谢谢你的建议
# 1 楼答案
试试这个:
然后:
这给了子类一个改变行为的机会。例如,子类可以实现在单独的线程中加载每个驱动程序。主类不必关心驱动程序是如何加载的,主类的任何用户也不必关心