웹 프로그램 이상이 발생했을 때, 그들은 아주 예쁜 클라이언트에서 직접 "허용 목록 라벨 오류 페이지"페이지를 표시하는 경향이있다. 따라서, 각 웹 응용 프로그램은 클라이언트가 통합 된 글로벌 예외 핸들러 프로그램을 통해 신속하고 친절한받을 수 있도록해야합니다.
1 봄 부트 기본 예외 처리 메커니즘
브라우저 클라이언트가 존재하거나 예외를 처리하는 서버가 발생하지 않는 페이지를 요청하면, 봄 부팅은 "허용 목록 라벨 오류 페이지"라는 문서의 기본 HTML 콘텐츠에 응답합니다.
의이 컨트롤러를 쓰자, 그것은 의도적 인 오류가 발생합니다
@Controller
public class IndexController {
@RequestMapping("index")
public String index(){
int i = 1/0;
return "index" ;
}
}
그런 다음 우리는 브라우저를 열고 다음과 같이 페이지를 찾을 수 :
2 @ControllerAdvice하여 예외를 처리하기 위해 특수
우리는 지정된 예외를 달성하기 위해 주석 및 메모 @ExceptionHandler 특별 대우를 @ControllerAdvice 사용할 수 있습니다. 우리는 로컬 예외 처리를해야하는 경우, 글로벌 예외 핸들러를 필요로하는 경우, 당신은 @ControllerAdvice + @ExceptionHandler를 사용해야 할 수 @Controller + @ExceptionHandler를 사용합니다.
현지 예외 처리
현지 예외 처리, 예외가이 주석에 정의 될 때,이 메소드가 실행됩니다 슬로우되는 클래스의 방법 @ExceptionHandler 코멘트를 필요로한다. 클래스 인 경우 @ExceptionHandler @Controller,이 메소드는이 범주에서 작동 곳. 클래스가 @ControllerAdvice의 @ExceptionHandler 노트와 함께있는 경우,이 메소드는 전 세계적으로 역할을합니다.
예를 들어, 우리는 @ExceptionHandler를 사용하여 예외를 잡기 위해, 컨트롤러가 위의 사용 수정했다
@Controller
public class IndexController {
@RequestMapping("index")
public String index(){
int i = 1/0;
return "index" ;
}
@ExceptionHandler(Exception.class)
@ResponseBody
public String exHandler(Exception e){
if(e instanceof ArithmeticException){
return "/ by zero";
}
return "others";
}
}
다음 우리는 브라우저를 열고 다시
예외 @ExceptionHandler 처리하고 클라이언트에게 에러 메시지를 출력 한 것으로 나타났다.
글로벌 예외 핸들러
3.2 봄하는 주석을 추가 @ControllerAdvice.
우리는 단지 @ControllerAdvice 처리에 의해 컨트롤러 계층을 입력합니다 오류에주의를 지불 할 필요, 인터셉터 발생 오류 및 액세스 오류는 상황이 SpringBoot 기본 예외 처리 메커니즘에 의해 처리됩니다 해결합니다.
우리는 글로벌 예외 핸들러 클래스를 작성
@ControllerAdvice
public class ExceptionAdvice {
@ResponseBody
@ExceptionHandler(value = Exception.class)
public Map<String,Object> exceptionHandler(Exception ex){
Map<String,Object> map = new HashMap<String,Object>();
map.put("message", ex.getMessage());
map.put("localizedmessage", ex.getLocalizedMessage());
map.put("class", ex.getClass());
map.put("stacktrace", ex.getStackTrace());
map.put("suppressed", ex.getSuppressed());
return map;
}
}
상기 제어기는 예외가 발생하는 경우, 클라이언트에 표시된
우리가 코멘트에 지적 할 수 있다는 희망의 부적절 성이 시청 해 주셔서 감사합니다 경우이 문서는 단순히 글로벌 봄 부팅 예외 처리 방식을 소개합니다.