当我读Core.Java.Volume.I时,我无法理解这个含义:
"请注意确保关键部分中的代码不是 通过抛出异常来绕过。如果之前抛出异常 在该部分的结尾,finally子句将放弃锁定, 但物体可能处于损坏状态。"
我该如何确保?在抛出异常时,是否必须绕过关键部分中的代码?
答案 0 :(得分:0)
在let source = Observable.interval(1000).take(10);
source.skipUntil(Observable.of(true).delay(5000))
.takeLast(1)
.subscribe(val => console.log(val));
部分添加您自己的代码,以确保对象处于安全状态。怎么做到这一点?取决于对象和状态。
答案 1 :(得分:0)
考虑这个伪代码:
Patient patient = service.getPatient(name);
hospitalEquipment.lock();
try {
patient.pauseLifeSupport();
// some code causing an exception
patient.resumeLifeSupport();
} finally {
hospitalEquipment.unlock();
}
在这个伪代码中,异常导致绕过“关键部分”,即恢复生命支持。您可以通过将调用移至resumeLifeSupport()
块内的finally
或有一些紧急行为来解决此问题。