본문 바로가기

Spring

예외 처리

728x90

항해 78일차

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

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

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

에러와 예외의 차이

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

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

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

Checked Exeption과 Unchecked Exeptoion

Checked Exeption Unchecked 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

    • 실행 단계에서 확인되므로 처리를 강제하지 않는다.

'Spring' 카테고리의 다른 글

메이븐(Maven)과 그래들(Gradle)  (0) 2024.04.17
Spring Security 동작 원리  (0) 2024.04.17
Travis CI로 application.properties 암호화  (0) 2024.04.16
Nginx 무중단 배포  (0) 2024.04.16
Travis CI와 AWS S3, CodeDeploy 연동 (3)  (0) 2024.04.16