반응형
Java에서 기본적으로 예외 처리라고 하면 try catch 를 사용하곤 한다.
자세한 내용은 아래 참고 포스팅에서 참고 바란다.
이번 포스팅에서 다룰 내용은 ExceptionHandler 와 ControllerAdvice 를 사용하여 예외처리 이다.
기존 예외 처리와의 차이점은
try catch 는 비지니스 로직에 녹여 내리는게 대부분이고
오늘 다룰 2가지는 Controller 단에서 사용된다.
@ExceptionHandler
@ExceptionHandler 는 @Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 한다.
@RestController @RequiredArgsConstructor public class ExceptionTestController { @PostMapping("/exceptiontest") public String justApi(@RequestBody TestInDto inDto) { throw new NullPointerException(); } @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.out.println("Test"); return "myService"; } } |
위 코드처럼 특정 class 안에 구현을 한다.
그리고 지정한 Exception이 터지면 ExceptionHandler가 동작을 하게 된다.
이 ExceptionHandler 는 Controller 내에서만 사용가능할 뿐더러 지정한 클래스에서만 사용이 가능하다.
모든 Controller 들 중에서 어떤 에러가 나더라도 모두 작동하게 하려면 그때 ContollerAdvice를 사용하면 된다.
별도의 클래스를 하나 더만들고,
@ControllerAdvice public class CustomExceptionHandler { @ExceptionHandler(Exception.class) public void handleAll(Exception ex){ System.out.println("TEST"); System.out.println(ex.toString()); } } |
이렇게 구현을 해주면 어느 Controller 에서 터지더라도 이 메서드가 호출된다.
하지만 ExceptionHandler가 선언이 되어있는 클래스는 해당 클래스 내에 ExcepionHandler를 타게 되니
필요에 따라 구현을 하면 되겠다.
참고 포스팅
https://thenicesj.tistory.com/151
반응형
'IT > Java' 카테고리의 다른 글
@Resource 관련 (58) | 2023.09.22 |
---|---|
[Java] Iterator (62) | 2023.09.21 |
[JPA] @OneToMany , @ManyToOne (61) | 2023.09.18 |
파일읽기 쓰기 (FileInputStream, FileOutputStream) (37) | 2023.09.16 |
.gz 파일 압축 풀기 (GZIPInputStream, GZIPOutputStream) (51) | 2023.09.15 |
댓글