클린코드 7 - 오류 처리

yesjm·2024년 4월 22일
0

클린코드를 읽자

목록 보기
7/13

오류 코드 대신 예외를 던지자

미확인 예외를 사용하라

  • 확인된 예외를 사용하면 throws 경로에 위치하는 모든 함수가 최하위 함수에서 던지는 예외를 알아야 하므로 캡슐화가 깨진다.
  • 일반적인 애플리케이션은 의존성이라는 비용이 이익보다 크다.

예외에 의미를 제공하라

  • 예외를 던질 때는 전후 상황을 충분히 덧붙인다.
  • 오류 메세지에 정보를 담아 예외와 함께 던진다.

호출자를 고려해 예외 클래스를 정의하라

  • 오류를 정의할 때 가장 중요한 관심사는 오류를 잡아내는 방법이 되어야 한다.
  • 외부 API를 감싸면 외부 라이브러리와 프로그램 사이의 의존성이 크게 줄어든다.
  • 특정 업체가 API를 설계한 방식에 발목 잡히지 않는다.

정상 흐름을 정의하라

  • 예외가 논리를 따라가기 어렵게 만드는 특수 상황을 처리할 필요가 없다면 코드가 더 간결해 진다.
  • 특수 사례 패턴 Special Case Pattern: 클래스나 객체가 예외적인 상황을 캡슐화해서 처리

null을 반환하지 마라, 전달하지 마라

  • null을 반환하는 코드는 일거리를 늘리고, 호출자에게 문제를 떠넘긴다.
  • 메서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예외를 던지거나 특수 사례 객체를 반환한다.
  • 많은 경우 특수 사례 객체가 손쉬운 해결책이다.

깨끗한 코드는 읽기도 좋아야 하지만 안정성도 높아야 한다.
오류 처리를 프로그램 논리와 분리하면 독립적인 추론이 가능해지며 코드 유지보수성도 크게 높아진다.

profile
yesjm's second brain

0개의 댓글