프로그래밍/Back end
[Back end] Spring Boot 에러 핸들러 설정
Reference M1
2020. 2. 15. 00:42
SpingBoot에서 에러가 날 경우 기본적으로 whitelabel 페이지로 이동하여 아래와 같은 에러 화면이 나타난다.

# SpringBoot 기본 에러 설정
server.error:
include-exception: false
include-stacktrace: never
path: '/error'
whitelabel.enabled: true
server.error.include-exception : 응답에 exception의 내용을 포함할지 여부
server.error.include-stacktrace : 응답에 stacktrace 내용을 포함할지 여부
server.error.path : 오류 응답을 처리할 핸들러(ErrorController)의 path
server.error.whitelabel.enabled : 브라우저 요청에 대해 서버 오류 시 기본으로 노출할 페이지를 사용할지 여부
server.error.whitelabel.enabled의 기본값이 true이기 때문에 위에서와 같이 오류 페이지가 노출된다.
/**
* 에러핸들러 클래스
*/
@Controller public class ErrorHandler implements ErrorController {
@RequestMapping("/error")
public String handleError(HttpServletRequest request) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if(null != status) {
int statusCode = Integer.valueOf(status.toString());
if(statusCode == HttpStatus.FORBIDDEN.value()) {
return "error_403";
} else if(statusCode == HttpStatus.NOT_FOUND.value()) {
return "error_404";
}
}
return "error";
}
@Override public String getErrorPath() {
return "/error";
}
}
에러에 대한 상태를 체크하여 상황에 맞는 페이지로 리턴하면 된다.