Written by
Sunwoo Han
on
on
스프링 부트 활용 : 스프링 웹 MVC 9부
스프링 부트 활용
ExceptionHandler
스프링 부트에는 기본적으로 error handler가 들어가 있다.
index페이지가 없을 때 localhost:8080으로 요청 시 보이는 화면(Whitelabel Error Page)이 기본 error handler가 처리해준 결과이다.
기본 error handling 로직은 BasicErrorController에 들어있다.
@MVC 예외 처리 방법
Error를 테스트 하기 위해 Controller를 만들어준다. Controller에서 /hello 요청이 왔을 때 Error를 던지게 한다.
@Controller
public class SampleController {
@GetMapping("/hello")
public String hello() {
throw new SampleController();
}
}
SampleException이라는 클래스를 만들어 RuntimeException을 던지도록 해준다.(extends RuntimeException)
package com.gracenam.springbooterrorhandler;
public class SampleException extends RuntimeException {
}
그 후, 이 앱에 특화되어 있는 error 정보를 담고 있는 커스텀 클래스를 만들어주자.
public class AppError {
private String message;
private String reason;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}
컨트롤러에서 @ExceptionHandler를 사용하여 SampleException이 발생할 때 쓰는 error handler를 만들어준다.
@Controller
public class SampleController {
@GetMapping("/hello")
public String hello() {
throw new SampleController();
}
@ExceptionHandler(SampleException.class)
public @ResponseBody AppError sampleError(SampleException e) {
AppError appError = new AppError();
appError.setMessage("error.app.key");
appError.setReason("IDK IDK IDK");
return appError;
}
}
이제 /hello
요청을 하면 만들어준 error hanlder가 정상 작동하는 것을 확인할 수 있다.
커스텀 에러 페이지
error 발생 시, status 코드 값에 따라 다른 웹 페이지를 보여주는 것이다.
/src/main/resources/static
또는 /src/main/resources/templates
에 error라는 디렉토리를 만들고, ‘상태코드 값.html’ 파일을 만들어준다.(상태 코드 값은 완전히 같게 하거나, 5xx 처럼 앞자리만 표시해줘도 된다.)
Reference
Comments
SPRING BOOT 의 다른 글
-
스프링 부트 활용 : 스프링 데이터 4부 17 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 3부 16 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 2부 15 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 1부 14 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 11부 13 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 10부 10 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 9부 09 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 8부 08 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 7부 03 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 6부 05 Aug 2021
-
스프링 부트 활용 : 스프링 웹 MVC 5부 27 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 4부 13 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 3부 06 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 2부 05 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 1부 30 May 2021
-
스프링 부트 활용 : Spring-Boot-Devtools 30 May 2021
-
스프링 부트 활용 : 테스트 26 May 2021
-
스프링 부트 활용 : 로깅 2부 25 May 2021
-
스프링 부트 활용 : 로깅 1부 23 May 2021
-
스프링 부트 활용 : 프로파일 23 May 2021
-
스프링 부트 활용 : 외부 설정 2부 21 May 2021
-
스프링 부트 활용 : 외부 설정 1부 15 May 2021
-
스프링 부트 활용 : SpringApplication 11 May 2021
-
스프링 부트 원리 : 정리 06 May 2021
-
스프링 부트 원리 : 독립적으로 실행 가능한 JAR 06 May 2021
-
스프링 부트 원리 : 내장 웹 서버 04 May 2021
-
스프링 부트 원리 : 자동 설정 02 May 2021
-
스프링 부트 원리 : 의존성 01 May 2021
-
스프링 부트 시작하기 01 May 2021