[TIL] 항해99 Day 78

woonie·2022년 3월 28일
0

TIL

목록 보기
58/64
post-thumbnail
post-custom-banner

항해 78일차

멘토링에서 조언해주신 대로 예외처리를 해봤다.

프로그램에서 예외는 발생할 수 밖에 없고 특히 예외로 인해 서버 프로그램이 작동을 멈출수도 있다는 피드백이 있었다. 예외가 발생하면 어떤 예외이고 이것이 무시해도 될 수준인지, 반드시 처리를 해야하는지, 시스템 자체를 종료시켜야 하는지에 대해 생각해봐야 한다.

시스템에서 물론 기능도 중요하지만 손쉬운 보완이라고 한다.
프로그램을 설계하고 구축하는 첫 단계에서 많은 예외상황에 대해 생각하고 고민해야한다.

에러와 예외의 차이

  • Error : 시스템 단계에서 발생하며 시스템의 비정상적인 상황이므로 예외처리가 아닌 시스템 환경을 개선해야 한다.

  • Exeption : 프로그램 로직에서 발생하며 개발자가 작성한 로직에서 예외를 예상하여 구분하고 처리해야 한다.

  • 모든 예외 클래스는 Throwable 클래스를 상속 받으며 Throwable은 최상위 클래스 Object의 자식 클래스이다. RuntimeExeption은 Checked Exeption과 Unchecked Exception을 구분하는 기준이다.

Checked Exeption과 Unchecked Exeptoion

Checked ExeptionUnchecked Exeptoion
처리여부반드시 처리해야 함처리를 강제하지 않음
확인 시점컴파일 단계실행 단계
예외 발생 시 트랜잭션 처리roll-back 하지 않음roll-back
대표 예외Exeption의 상속 받는 하위 클래스 중
Runtime Exception을 제외 한 모든 예외
- IOException
- SQLExeption
Runtime Exeption 하위 예외
- NullPoint Exception
- IllegalArgument Exception
- IndexOutOfBound Exception
- System Exception

Checked Exption과 Unchecked Exeption의 명확한 구분 기준은 '만드시 처리를 하냐 안하냐'이다.

  • Checked Exeption
    • 컴파일 단계에서 확인
    • 예외에 대한 처리를 강제한다.
    • try / chatch로 감싸거나 throw로 던져서 처리해야 한다.

  • Unchecked Exeptoion
    • 실행 단계에서 확인되므로 처리를 강제하지 않는다.
profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.
post-custom-banner

0개의 댓글