-
Spring의 예외처리(1) - 예외 종류Springboot/study 2023. 11. 30. 15:46
✍️ 들어가며
원래 개발을 진행하며 Spring 표준 예외 처리와 사용자 정의 예외 처리에 대해서 고민했던 부분을 포스팅하려 했지만,
공부를 하다보니 예외의 종류부터 알아야 할 것 같아 함께 포스팅해봅니다!
🎧 한시오분(1:05) - 검정치마
https://youtu.be/85km0nIrCGs?si=Zn95PjtjGw5dBQNf
👆예외(Exception)의 종류와 특징
제일 상단의 모든 객체의 최상위 부모 클래스인 Object를 제외하고 하나씩 설명해 나가겠습니다.
토비의 스프링 - Spring 예외 종류 및 구조 1. Throwable
예외처리를 할 수 있는 최상위 클래스입니다.
흔히 저희가 '에러와 예외의 차이가 뭐지?'라고 고민해봤을 Exception과 Error 클래스가 Throwable의 상속을 받습니다.
2. Error
에러는 시스템 레벨에서 발생하여, 개발자가 어떻게 조치를 할 수가 없는 수준의 에러입니다. (JVM, OOM 등)
따라서, 애플리케이션에서 이런 에러에 대한 처리는 대응할 수 없기 때문에 신경 쓸 필요가 없으며, 통상적으로 Error 클래스를 상속해 하위 에러 클래스를 만들어서도 안됩니다.
3. Exception
출처: https://sjh836.tistory.com/122 예외는 개발자가 구현한 로직에서 발생하게 되며, JVM은 정상적으로 동작이 됩니다.
개발자는 다양한 방식으로 로직에서 발생하는 예외들을 할 수 있습니다.
다음은 예외의 2가지 종류입니다.
✔️ Checked Exception
Exception 클래스의 서브 클래스에서 RuntimeException을 상속하지 않은 예외 클래스들입니다.
체크 예외를 처리하지 않으면 컴파일 자체가 안되며,
그렇게 때문에 사용할 메서드가 체크 예외를 던진다면 반드시 이를 catch 문으로 잡든, 다시 throws 로 메서드 밖으로 다른 곳으로 던져야합니다.
✔️ Unchecked Exception
Exception 클래스의 서브 클래스에서 RuntimeException을 상속하는 예외 클래스들입니다.
명시적인 예외 처리를 Java에서 강제하지 않기 때문에 컴파일 시 체크되지 않으며, 이름 그대로 Runtime시 발생하는 예외입니다.
주로 프로그램의 오류가 있을 경우 발생하도록 의도된 것입니다.
흔히 개발하며 볼 수 있는 오브젝트를 할당하지 않은 레퍼런스 변수를 사용하려고 시도했을 때 발생하는 NullPointerException🤬, 허용되지 않는 값을 사용해서 메서드를 호출할 때 발생하는 IllegalException🥵 등이 있습니다.
사용자 정의 예외 클래스를 만들 때,
Exception을 바로 상속하여 사용할 수도 있지만 좀 더 명시적으로 RuntimeException을 상속하는 클래스를 만들어 사용하겠습니다.
참고자료
https://www.yes24.com/Product/Goods/7516911
토비의 스프링 3.1 세트 - 예스24
『토비의 스프링 3.1』은 스프링을 처음 접하거나 스프링을 경험했지만 스프링이 어렵게 느껴지는 개발자부터 스프링을 활용한 아키텍처를 설계하고 프레임워크를 개발하려고 하는 아키텍트에
www.yes24.com
https://sjh836.tistory.com/122
예외처리 (throwable, exception, error, throws)
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html1. 예외처리란?Exception Handling 이라고 하며, 잘못된 하나로 인해 전체 시스템이 무너지는 결과를 방지하기 위한 기술적인 처리이다. ja
sjh836.tistory.com
명쾌한 Custom Exception in Java
Custom Exception을 언제 사용해야 할지 알 수 있다 : Standard Exception이 마땅치 않은 상황에 대하여 Custom Exception 작성법을 알 수 있다 : 지켜야 할 것들 어떤 점을 주의해서 사용해야 하는지 알 수 있다
ssoco.tistory.com
'Springboot > study' 카테고리의 다른 글
Spring의 예외처리(5) - ErrorCode를 직접 정의해보자! (0) 2023.12.01 Spring의 예외처리(4) - 표준 예외 vs 사용자 정의 예외 (0) 2023.11.30 Spring의 예외처리(3) - Spring 전역에서 예외 처리해보자 (0) 2023.11.30 Spring의 예외처리(2) - Spring의 예외처리 흐름과 다양한 예외처리 방식 (1) 2023.11.30