본문 바로가기
Back-end/JAVA

[JAVA] Spring으로 REST API 구현하기 (4) - ControllerAdvice

by 허도치 2019. 12. 5.

2019/12/05 - [Back-end/JAVA] - [JAVA] Spring으로 REST API 구현하기 (1) - 프로젝트 생성 및 실행

2019/12/05 - [Back-end/JAVA] - [JAVA] Spring으로 REST API 구현하기 (2) - Interceptor

2019/12/05 - [Back-end/JAVA] - [JAVA] Spring으로 REST API 구현하기 (3) - Error Controller

 

 

  이번 포스트에서는 Controller에서 Exception을 throws 했을 때 처리해주는 ExceptionHandler를 아주 간단하게 만들어 보도록 하겠다.

 

 

1. ControllerAdvice 작성.

   1-1. ExceptionAdvice.java 생성.

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
31
32
33
34
package com.dochi.prj.config;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
 
@RestControllerAdvice
public class ExceptionAdvice {
 
    @ExceptionHandler(Exception.class)
    public String excpetionHandler(HttpServletRequest request
                                   , HttpServletResponse response
                                   , Object handler
                                   , Exception exception) {
        
        /* Todo... */
        
        return exception.getMessage();
    }
    
    @ExceptionHandler(NullPointerException.class)
    public String nullPointHandler(HttpServletRequest request
                                   , HttpServletResponse response
                                   , Object handler
                                   , Exception exception) {
        
        /* Todo... */
        
        return exception.getMessage();
    }
}
 
cs

         - 9 ln: @ControllerAdvice는 Controller에서 발생한 Exception을 Catch해주는 어노테이션으로 여기에 @ResponseBody를 추가한 것이 @RestControllerAdvice임.

         - 12 ln: @ExceptionHandler는 특정 Exception에 대한 Handling을 처리해주는 어노테이션.

 

 

2. 마치며.

   - 아직은 Controller를 구현하지 않아서 상세하게 처리할만한 Exception이 없기 때문에 간단하게 끝이 났다.

댓글