목록 보기
코드 품질 개선 기법 20편: 이례적인 예외 과대 포장
백엔드

코드 품질 개선 기법 20편: 이례적인 예외 과대 포장

라인
라인
2025년 9월 12일

두줄요약

리소스 해제용 `use` 구현에서 블록 예외와 정리 예외가 동시에 날 수 있음을 다뤘습니다. 예외를 새로 감싸기보다 우선순위를 정하고 suppressed 예외를 활용하라고 제안했습니다.

핵심 내용

  • use 같은 리소스 해제용 고차 함수에서, 블록 예외와 정리 과정 예외가 함께 발생할 수 있는 상황 정리
  • 예외를 별도 래퍼로 바꾸면 호출자의 catch가 기대대로 동작하지 않을 수 있다는 문제 제기
  • Throwable.addSuppressed로 보조 예외를 부가하고, 더 중요한 예외를 우선하는 방식 제안

주의할 점

  • 정리용 dispose 예외가 본 작업 예외를 덮어쓰지 않도록 우선순위 검토 필요
  • 확인된 예외를 RuntimeException으로 감싸면 호출부의 예외 처리 흐름이 달라질 수 있음
  • 부모-자식 관계의 예외를 여러 단계로 잡는 코드에서는 래핑 영향 점검 필요

적용해볼 점

  • 리소스 해제 패턴 구현 시 close/dispose 중 발생 가능한 예외까지 포함해 설계
  • 예외 포장보다 억제 예외(suppressed exception) 활용 검토

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...