Spring - 9. 예외처리

병호·2023년 8월 17일
1

Spring

목록 보기
9/16
post-custom-banner


예외처리를 위한 메서드를 컨트롤러 안에 만들 수 있다. 메서드에는 @ExceptionHandler를 붙여주고 안에는 처리할 예외를 넣어준다. 하나의 메서드로 여러개의 예외를 처리하기 위해서는 매개변수를 배열로 입력한다. 위 코드에서 예외처리 메서드 안에서의 Model과 컨트롤러 메서드 안에서의 Model은 서로 다른 객체이다.

예외처리 메서드는 원래 같은 컨트롤러 안에서 발생하는 예외만 처리할 수 있으나, 별도의 클래스를 만들고 예외처리 메서드를 작성한 후, @ControllerAdvice를 클래스에 붙이면 모든 컨트롤러의 예외를 처리 가능하다. @ControllerAdvice에 아무것도 적어주지 않으면 모든 패키지에 적용되고 패키지를 적어주면 지정된 패키지에서만 적용가능하다. 만약 같은 예외처리가 같은 컨트롤러 안에 있고, @ControllerAdvice가 있는 예외처리 클래스, 두 클래스에 다있다면 가까운 같은 클래스내의 예외처리 메서드가 실행된다.(예외처리메서드가 중복된 경우, 컨트롤러 내의 예외처리 메서드가 우선)

@ResponseStatus

상태코드를 바꾸어주는 역할


위에서 예외처리를 했는데 응답으로 200번, 서버가 요청을 처리했다라는 응답이 나왔다. 이러한 경우는 예외처리를 해주었지만 서버에서 예외가 발생하였으므로 500번, 즉 서버에서 오류가 발생하여 요청을 수행할 수 없다는 응답을 보내주어야 한다. 이럴때 사용하는 것이 @ResponseStatus이다.


이와 같이 상태코드가 500으로 바뀐것을 알 수 있다.

profile
안녕하세요
post-custom-banner

0개의 댓글