Item 76 : 가능한 한 실패 원자적으로 만들라
2021. 9. 12. 12:59
호출된 메소드가 실패하더라고 해당 객체는 메소드 호출 전 상태를 유지해야 한다.
메소드를 실패 원자적으로 만드는 방법
- 불변 객체 생성(아이템 17)
https://puzzle-making.tistory.com/131
Item 17 : 변경 가능성을 최소화 하라
불변 클래스에 대한 설명이다. 일단 먼저 클래스를 불변으로 만들기 위한 규칙은 다음과 같다. 객체의 상태를 변경하는 메소드(변경자)를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 하
puzzle-making.tistory.com
- 가변 객체의 메소드를 실패 원자적으로 만드는 가장 흔한 방법은 작업 수행에 앞서 매개변수 유효성 검사를 하는 것(아이템 49)
- 실패할 가능성이 있는 모든 코드를 객체의 상태를 바꾸는 코드보다 앞에 배치하는 방법도 있다.
public Object pop() { if (size == 0) { //if 문에서 size를 확인해 0이면 예외를 던짐 throw new EmptyStackException(); } Object result = elements[--size]; elements[size] == null; // 다 쓴 참조 해제 return result; }
https://puzzle-making.tistory.com/167
Item 49 : 매개변수가 유효한지 검사하라
메소드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족하길 바란다 예를 들어 인덱스 값은 음수이면 안된다. 객체 참조는 null이 아니어야 한다 하는 식이다. 이런 제약은 반드시 문
puzzle-making.tistory.com
- 객체의 임시 복사본에서 작업을 수행한 다음 작업이 성공적으로 완료되면 원본 객체와 교환하는 방법
- 정렬하기 전 원소들을 배열에 배치해 수행한다
- 작업 도중 발생하는 실패를 가로채는 복구 코드를 작성하여 작업 전 상태로 되돌리는 방법
- 주로 내구성을 보장해야하는 자료구조에 쓰임, 자주 쓰이진 않음
'책 > 이펙티브자바' 카테고리의 다른 글
Item 78 : 공유 중인 가변 데이터는 동기화해 사용하라 (0) | 2021.09.15 |
---|---|
Item 77 : 예외를 무시하지 말라 (0) | 2021.09.13 |
Item 75 : 예외의 상세 메시지에 실패 관련 정보를 담으라 (0) | 2021.09.11 |
Item 74 : 메소드가 던지는 모든 예외를 문서화하라 (0) | 2021.09.10 |
Item 73 : 추상화 수준에 맞는 예외를 던져라 (0) | 2021.09.09 |