- 호출 된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 한다.
- 이러한 특성을 실패 원자적 이라고 한다.
가변 객체의 메서드를 실패 원자적으로 만드는 가장 흔한 방법은 작업 수행에 앞서 매개변수의 유효성을 검사하는 것
public Object pop() {
if (size == 0)
throw new ExmptyStackException();
Object result = elements[--size];
elements[size] = null;
return result;
}
이렇게 하지 않으면 size의 값이 음수가 되어 다음번 호출도 실패하게 만든다
객체의 임시 복사본에서 작업을 수행한 다음, 작업이 성공적으로 완료되면 원래 객체와 교환하는 것이다.
작업 도중 발생하는 싪채를 가로채는 복구 코드를 작성하여 작업 전 상태로 되돌리는 방법