728x90
    
    
  반응형
    
    
    
  Spring MVC ExceptionHandler
예시
// SampleException.java
// Custom Exception Class
public class SampleException extends RuntimeException {
    ...
}
// AppError.java
// Custom Error Info Class
public class AppError {
    private String message;
    private String reason;
    getter/setter
}
// SampleController.java
@Controller
public class SampleController {
    @GetMapping(value="/hello")
    public String hello() {
        throw new SampleException();    // Error throw
    }
    // 해당 Contoller 안에서 SampleException 예외가 발생하면 이 핸들러를 사용하겠다.
    @ExceptionHandler(SampleException.class)
    public @ResponseBody AppError sampleError(SampleException e) {
        AppError appError = new AppError();
        appError.setMessage("error.app.key");
        appError.setReason("I don't know");
        return appError;
    }
}
결과
// Result
{"message":"error.app.key","reason":"I don't know"}
* 전역 ExceptionHandler
클래스를 따로 만들고 @ControllerAdvice 추가하고 해당 클래스에 ExceptionHandler를 정의한다.
// 전역 ExceptionHandler
@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(해당 Exception.class)
    public @ResponseBody AppError sampleError1(해당 Exception e){
        ...
    }
    
    @ExceptionHandler(해당 Exception.class)
    public @ResponseBody AppError sampleError2(해당 Exception e){
        ...
    }
    
    ...
}
Spring Boot ExceptionHandler
ExceptionHandler를 커스터마이징 하는 방법
ErrorController타입의 핸들러를 구현한 후 빈으로 등록BasicErrorController를 상속받아 구현
Custom Error Page
에러가 발생했을 때 응답의 상태값에 따라 다른 웹 페이지를 보여주고 싶을 때 사용
특징
- 파일 위치 
src/main/resources/static|templates/error/ - 정확한 에러코드나 특정 구간 에러코드(
4xx, 5xx)를 명칭으로 하여 파일 생성 - 더 많은 커스터마이징을 하고 싶다면 
ErrorViewResolver구현 
728x90
    
    
  반응형
    
    
    
  'Dev > Spring Boot' 카테고리의 다른 글
| [스프링 부트 개념과 활용] 스프링 웹 MVC 11부 (0) | 2020.08.26 | 
|---|---|
| [스프링 부트 개념과 활용] 스프링 웹 MVC 10부 (0) | 2020.08.26 | 
| [스프링 부트 개념과 활용] 스프링 웹 MVC 8부 (0) | 2020.08.26 | 
| [스프링 부트 개념과 활용] 스프링 웹 MVC 7부 (0) | 2020.08.26 | 
| [스프링 부트 개념과 활용] 스프링 웹 MVC 4, 5, 6부 (0) | 2020.08.26 | 
댓글