当我在读Core.Java.Volume.I时,我无法理解这句话的含义

时间:2016-10-28 20:05:49

标签: java

当我读Core.Java.Volume.I时,我无法理解这个含义:

  

"请注意确保关键部分中的代码不是   通过抛出异常来绕过。如果之前抛出异常   在该部分的结尾,finally子句将放弃锁定,   但物体可能处于损坏状态。"

我该如何确保?在抛出异常时,是否必须绕过关键部分中的代码?

2 个答案:

答案 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或有一些紧急行为来解决此问题。