예외 과대 포장, 코드 품질을 망치는 주범!
by DD
8개월 전
조회수 0
Kotlin의 `use` 함수와 같이 리소스 해제를 보장하는 패턴에서 예외 과대 포장의 문제점을 지적함
DisposableException과 같이 예외를 감싸는 과정에서 예외 처리 로직의 혼란을 야기할 수 있음을 설명
Throwable.addSuppressed를 활용하여 예외 우선순위를 명확히 하고, 코드의 가독성을 높이는 방법을 제시
리소스 관리 패턴의 함정
Closeable.use와 같은 리소스 관리 패턴은 예외 발생 시에도 리소스 해제를 보장한다. 구체적으로, `try-finally` 블록을 사용하여 예외 발생 여부와 관계없이 `dispose()`를 호출한다. 따라서 메모리 누수 방지에 효과적이다. 하지만, 예외를 과도하게 포장하면 문제 발생.
예외 포장의 트레이드오프
예외를 감싸는 것은 예외 정보 손실과 디버깅 어려움을 야기한다. 반면, 예외 유형 통일을 통해 예외 처리를 단순화할 수 있다. 따라서, Throwable.addSuppressed를 사용하여 예외 우선순위를 명확히 하고, 코드 가독성을 높이는 것이 중요하다.
안전한 예외 처리 전략
예외 처리 시, 예외의 원인을 정확히 파악하고, addSuppressed를 활용하여 예외 정보 보존에 힘써야 한다. 구체적으로, IOException과 같은 특정 예외를 다른 예외로 감싸는 경우, 호출자가 원래 예외를 처리할 수 없게 될 수 있다. 따라서, 예외 처리 흐름을 신중하게 설계해야 한다.