웹 애플리케이션을 개발할 때 요청 처리 중에 오류가 발생하는 것은 매우 흔한 일입니다. 이때 통합 예외 처리가 필요합니다. 이 기사에서는 Spring Boot가 통합 예외 처리를 구현하는 방법에 대한 관련 정보를 주로 소개합니다. 도움이 필요한 친구들이 함께 살펴보겠습니다.
Spring Boot에는 기본적으로 오류 매핑이 포함되어 있지만 이 오류 페이지는 사용자에게 그다지 친숙하지 않습니다.
통합 예외 처리
각 컨트롤러에서 하나씩 정의하는 대신 @ControllerAdvice를 사용하여 통합 예외 처리를 위한 클래스를 정의합니다.
@ExceptionHandler는 함수에 대한 함수 유형을 정의하는 데 사용되며 마지막으로 Exception 객체와 요청 URL을 URL에 매핑합니다.
@ControllerAdvice class ExceptionTranslator { public static final String DEFAULT_ERROR_VIEW = "error"; @ExceptionHandler(value = Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("exception", e); mav.addObject("url", req.getRequestURL()); mav.setViewName(DEFAULT_ERROR_VIEW); return mav; } }
error.html 페이지 표시 구현
template 디렉토리에 error.html을 생성합니다.
예:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8" /> <title>统一异常处理</title> </head> <body> <h1>Error Handler</h1> <p th:text="${url}"></p> <p th:text="${exception.message}"></p> </body> </html>
Json 형식을 사용하여 반환
추가만 하면 됩니다. @ ExceptionHandler 뒤에 @ResponseBody를 추가하면 처리 함수 반환 내용을 JSON 형식
으로 변환하여 다음과 같은 JSON 반환 객체를 생성할 수 있습니다.
public class ErrorDTO implements Serializable { private static final long serialVersionUID = 1L; private final String message; private final String description; private List<FieldErrorDTO> fieldErrors; //getter和setter省略 }
지정된 Exception에 대해 예외 처리를 추가할 수 있습니다
@ExceptionHandler(ConcurrencyFailureException.class) @ResponseStatus(HttpStatus.CONFLICT) @ResponseBody public ErrorDTO processConcurencyError(ConcurrencyFailureException ex) { return new ErrorDTO(ErrorConstants.ERR_CONCURRENCY_FAILURE); }
ErrorConstants.ERR_CONCURRENCY_FAILURE는 정의된 예외 메시지입니다.
요약
위 내용은 Spring Boot 통합 예외 처리 예제 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!