코드가 더 깔끔해진다.
try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. 그러므로 예외가 발생할 코드를 짤 때는 try-catch-finally 문으로 시작하는 편이 낫다. 먼저 강제로 예외를 일으키는 테스트 케이스를 작성 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다.
확인된 예외는 OCP(Open Closed Principle)를 위배한다. 만약 최하위 함수를 변경한다면 최하위 단계에서 최상위 단계까지 연쇄적인 수정을 해야 한다. 일반적으로 확인된 오류는 이익보다 비용 더 크므로 미확인 예외를 사용해야 한다.
오류가 발생한 원인과 위치를 찾기 쉽게 예외를 던질 때는 전후 상황을 충분히 덧붙인다.
ex. 실패한 연산 이름, 실패 유형 등
오류를 정의할 때 가장 중요한 것은 오류를 잡아내는 방법이 되어야 한다. 오류의 원인과는 무관하게 오류를 처리하는 방식이 일정하다면 묶어서 처리한다.
때때로 오류가 나면 중단 후 중단된 계산을 처리하는 방식이 적합하지 않을 수 있다. 그때는 특수 사례 패턴을 사용한다. 특수 사례 패턴은 예외적인 상황을 클래스나 객체가 캡슐화해서 처리하도록 하는 방식이다.
null을 반환하는 코드는 나쁜 코드다. 누구 하나라도 null 확인을 빼먹는다면 애플리케이션이 통제 불능에 빠질지도 모른다. null을 반환하는 대신 예외를 던지거나 특수 사례 객체를 반환하라.
❌null을 인수로 받으면 예외 처리하기
✅null을 인수로 넘기는 것을 금지하기