Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Item77. 예외를 무시하지 말라 #74

Open
Mingadinga opened this issue Aug 29, 2023 · 0 comments
Open

Item77. 예외를 무시하지 말라 #74

Mingadinga opened this issue Aug 29, 2023 · 0 comments

Comments

@Mingadinga
Copy link
Member

예외는 왜 무시하면 안되는가?

  • API 설계자가 예외를 명시하는 이유 : 클라이언트가 그 메서드를 사용할 때 적절한 조치를 취해달라고 요구하는 것
  • catch 블록을 비워두는 것 : 문제 상황에 대처해야하는 상황에 대해 아무것도 하지 않는 것. 대처는 고사하고 문제 상황을 알리지도 못한다.
  • 예외를 무시하고 지나간 프로그램은 오류를 내재한 채 동작하게 된다. 그러다 어느 순간 문제의 원인과 아무 상관 없는 곳에서 갑자기 죽어버릴 수 있다.
  • 예외를 적절히 처리하면 오류를 완전히 피할 수 있다. 무시하지 않고 바깥으로 전파되게만 놔둬도 최소한 디버깅 정보를 남긴 채 프로그램이 신속히 중단되게 할 수 있다. catch 블록을 비워 무시하는 것을 절대 절대 하면 안된다. 로그라도 남겨라!

무시해도 되는 예외와 그 대처

예시 : FileInputStream

  • 입력 전용 : 파일의 상태를 변경하지 않았으니 복구할 것이 없음
  • 스트림 닫기 : 필요한 작업은 모두 읽었으므로 남은 작업을 중단할 이유가 없음

무시한 예외는 어떻게 처리해야할까?

  • 잡지 않고 넘어가도 오류를 내재하지 않으므로 잡을 필요는 없다.
  • 같은 예외가 자주 발생한다면, 디버깅을 위해 로그로 남기는 편이 좋다.
  • 예외를 무시하기로 결정했다면 catch 블록 안에 그렇게 결정한 이유를 주석으로 남기고, 예외 변수의 이름을 ignored로 바꾸자.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant