아이템 76. 가능한 한 실패 원자적으로 만들라 - KwangtaekJung/book-effective-java GitHub Wiki

호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 한다.

  • 이러한 특성을 실패 원자적(failure-atomic)이라고 한다.

메서드를 실패 원자적으로 만드는 방법

  • 불변 객체로 설계한다.
  • 가변 객체의 경우, 작업 수행에 앞서 매개 변수의 유효성을 검사한다.
    • 실패할 가능성이 있는 모든 코드를 객체의 상태를 바꾸기 이전에 수행한다.
  • 임시 복사본에서 작업한 후 완료되면 원래 객체와 교체한다.
  • 작업 도중 발생하는 실패를 가로채는 복구 코드를 작성하여 작업 전 상태로 되돌린다.
    • 자주 쓰이는 방법은 아님.