일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- tvn shift
- 부의인문학
- text[]
- Spring기초
- trend road
- 심리학도서
- 파이어운동
- 불렛저널책
- 라이더캐롤
- Cardinality
- 검사예외
- 비검사예외
- 코로나블루
- 트랜드로드
- logrotate error
- field injection
- 의존성검색
- fire운동
- ANY(
- constructor injection
- 코로나불안증
- 직지아모르마네트
- su option
- 메모독서법
- array_append
- ControllerAdvice
- 인수공통감염병
- 독후감
- array_cat
- array_prepend
- Today
- Total
야생토끼 블로그
Unckecked Exception과 Checked Exception 본문
복구할 수 있는 상황이면 검사 예외를, 프로그래밍 오류라면 비검사 예외를 던지자, 확실하지 않다면 비검사예외를 던지자. 검사 예외도 아니고 런타임 예외도 아닌 throwable 은 정의하지도 말자. 검사 예외라면 복구에 필요한 정보를 알려주는 메서드도 제공하자.
- 이펙티브 자바 3편

* 출처 : https://www.javamadesoeasy.com/2015/05/exception-handling-exception-hierarchy.html
에러(Error)
위의 이미지에서도 볼 수 있듯 시스템에 비정상적인 상황이 생겼을 때 발생. 심각한 수준의 오류이고 어플리케이션에서 제어할 수 없기 때문에, 비검사예외(Unckecked Exception)로 분류. 어떤 흐름 중에 발생할 지 예측 불가.
예외(Exception)
예상할 수 있고 개발자의 로직에서 발생하므로, 개발자가 만들기도하고 처리도 가능.
검사예외(Checked Exception)
컴파일 단계에 컴파일러가 체크, Exception 하위 클래스 중 Runtime 제외한 예외, 처리 안하면 컴파일 에러남. 예외 발생 시 트랜잭션 롤백하지 않음. 대표적으로 IOException, SQLException.
비검사예외(Unchecked Exception)
실행 단계, 컴파일러에게 안걸러지고 실행했을 때 발생. 코드 상 문제. 예외 발생 시 트랜잭션 롤백함. 대표적으로 NullPointerException, OutOfBoundsException.
사용자 정의 예외
개발자가 생성하고 던지는 예외, 비정상적인, 예측가능한 예외에 대해 커스텀으로 생성한 예외를 던지고 처리하는 것.
예외를 잡은 뒤에 처리 방법
복구 : 상황을 파악하고 정상으로 돌려놓는 방법
회피 : 직접 담당하지 않고 호출한 곳으로 던지는 방법
전환 : 적절한 예외로 전환하여 던지는 방법
예외를 다루는 방법
catch절 비워두지 않기, 적어도 주석처리라도하기.
어디에서 발생한 에러인지 표기하기. (printStackTrace(), 로거사용)
Checked Exception을 Unchecked Exception으로 변경해서 던져야할 때, Checked 에서 받은 내용을 전해주기.
RESTFul 서비스 예외 처리
컨트롤러 기반 예외 처리 (Controller based Exception Handling) : @ExceptionHandler 사용, @Controller, @RestController에서만 사용가능, 개별도 가능하고 공통 컨트롤러를 다른 컨트롤러가 상속받는 구조도 가능.
전역 예외 처리 (Global Exception Handling) : @ControllerAdvice, @RestControllerAdvice 사용, 전체 어플리케이션의 컨트롤러(Controller나 RestController 각각 따로)에 적용, @ExceptionHandler, @ModelAttribute, @InitBinder 3가지 메소드 지원.

* 출처 : https://www.concretepage.com/spring/spring-mvc/spring-mvc-controlleradvice-annotation-example
참고 자료 :
https://madplay.github.io/post/java-checked-unchecked-exceptions
https://palpit.tistory.com/914
https://close852.tistory.com/47
https://www.slipp.net/questions/350
https://jeong-pro.tistory.com/195