item 77 : 예외를 무시하지 말라
예외 처리에서 흔히 저지르는 실수와 올바른 처리 방법
1. 빈 catch
블록의 위험성
catch
블록의 위험성문제점:
예외를 무시하면 문제 상황을 적절히 처리하지 못해 오류가 누적될 수 있다.
빈
catch
블록은 화재경보를 꺼버리는 것과 같음. 문제를 알리지 않고 숨긴다.프로그램이 정상적으로 실행되는 것처럼 보이지만, 원인을 파악하기 어려운 지점에서 갑작스러운 오류가 발생할 수 있다.
예시: 나쁜 예외 처리
2. 예외를 무시해야 할 경우
예외를 무시해야 할 상황이 존재하긴 하지만, 이는 매우 드물다.
예외를 무시할 경우라도 반드시 그 이유를 명확히 주석으로 남기고, 가능하면 로그를 남겨야 한다.
대표적인 예외 무시 사례
파일 닫기: 입력 전용 스트림을 닫는 과정에서 예외가 발생하더라도 복구할 것이 없으므로 무시 가능.
올바른 예외 무시 예제
ignored
변수 이름 사용: 예외를 명시적으로 무시한다는 의도를 코드에 담는다.
3. 적절한 예외 처리 방안
적절한 대체 조치
예외가 발생했을 때, 프로그램의 기본 동작을 유지할 대체 방안을 마련.
예시: 타임아웃 발생 시 기본값 사용.
로그 작성
예외 상황을 무시해야 한다면 반드시 로그를 남겨 추후 분석 가능하도록 한다.
예시:
가능한 한 예외를 바깥으로 전파
예외를 처리할 책임이 없는 경우, 상위 호출자에게 예외를 전파.
예외를 무시하지 않으면 최소한 디버깅 정보를 남길 수 있음.
예시: 예외 전파
4. 예외 무시에 따른 결과
예외를 적절히 처리하지 않으면 프로그램이 오류를 내재한 채 동작하게 된다.
문제가 누적되다가, 문제의 원인과 상관없는 곳에서 갑작스러운 프로그램 종료가 발생할 수 있다.
예외를 전파하면 디버깅 정보가 남아 오류 원인을 신속히 파악할 수 있다.
5. 예외 처리의 일반 원칙
예외를 절대 무시하지 말 것:
무시해야 할 경우, 명확한 이유를 주석으로 남기고 로그를 작성.
가능하면 기본 동작으로 대체하거나, 상위 호출자에게 예외를 전파.
API 설계자의 의도를 존중할 것:
메서드 선언에 명시된 예외는 적절히 처리하라는 의도임.
이를 무시하면 프로그램의 안정성과 신뢰성을 해칠 수 있음.
로그를 활용하라:
예외 발생 시 상황을 기록하여 추후 원인 분석이 가능하도록 한다.
예외를 처리할 수 없다면 전파하라:
예외를 적절히 처리하지 못할 경우, 바깥으로 전파하여 상위 호출자가 처리하도록 한다.
📚 결론
예외는 문제 상황을 포착하고 적절히 대처하기 위해 존재한다.
예외를 무시하거나 잘못 처리하면 프로그램의 신뢰성과 안정성을 저하시킬 위험이 크다.
예외를 무시하거나 처리할 때는 항상 그 이유를 명확히 하고, 필요한 정보를 기록하여 추후 디버깅이 가능하도록 해야 한다.
Last updated
Was this helpful?