try-catch-finally 문에서 try 블록에 들어가는 코드를 실행하면 어느 시점에서든 실행이 중단된 후 catch 블록으로 넘어갈 수 있음.
→ 예외에서 프로그램 안에 범위를 정의한다
try 블록은 트렌잭션과 유사 → try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 함.
∴ 예외 발생할 코드는 try-catch-finally로 작성. (try 블록에서 무슨 일이 생기든지 호출자가 기대하는 상태를 정의하기 쉬워짐.)
강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법 권장함.
→ 자연스럽게 try 블록의 트렌젝션 범위부터 구현하게 되므로 범위 내에서 트랜젝션 본질을 유지하기 쉬워짐.
확인된 예외는 필수적이지 않다.
∵ OCP 를 위반하기 때문. → 하위 단계에서 코드 변경 시 상위 단계 메서드의 선언부를 전부 고쳐야 함.
⇒ 캡슐화 깨짐
예외를 던질 때 전후 상황을 충분히 덧붙인다.
→ 오류 발생 원인, 위치 파악 용이
∴ 오류 메세지에 정보를 담아 예외와 함께 던진다. ( 실패 연산 이름, 실패 유형 언급)