실패 원자적 호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 한다는 내용입니다. 실패 원자적으로 만드는 방법 불변 객체로 설계 불변 객체는 태생적으로 실패 원자적입니다. 메서드가 실패하면 새로운 객체가 만들어지지는 않을 수 있으나 기존 객체가 불안정한 상태에 빠지는 일이 없습니다. 불변 객체의 상태는 생성 시점에 고정되어 절대 변하지 않기 때문입니다. 작업 수행에 앞서 매개변수의 유효성 검사 public Object pop() { if(size == 0){ throw new EmptyStackException(); } Object result = elements[--size]; elements[size] = null; // 다쓴 참조 해제 return result; } if 문이..