- 创建一个自定义的异常类,继承自
Exception或RuntimeException。该异常类可以包含自定义的错误信息和其他需要的属性。public class CustomException extends RuntimeException { // 自定义错误信息和其他属性 // ... } - 创建一个全局异常处理类,使用
@ControllerAdvice注解标记,并使用@ExceptionHandler注解定义异常处理方法。@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(CustomException.class) public ResponseEntity<ErrorResponse> handleCustomException(CustomException ex) { ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), ex.getMessage()); return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR); } // 其他异常处理方法 // ... }在上述示例中,
handleCustomException方法用于处理CustomException类型的异常。在异常处理方法中,可以根据实际需求进行异常处理逻辑,例如返回自定义的错误响应、记录日志等。
@ControllerAdvice和@ExceptionHandler注解的解释:
@ControllerAdvice:
@ControllerAdvice是一个用于定义全局异常处理类的注解。通过将@ControllerAdvice注解标记在类上,可以将该类定义为全局异常处理类,用于处理应用程序中抛出的异常。全局异常处理类可以拦截应用程序中的异常,并根据异常类型调用相应的异常处理方法进行处理。@ExceptionHandler:
@ExceptionHandler是一个用于定义异常处理方法的注解。通过将@ExceptionHandler注解标记在方法上,可以定义处理特定类型异常的方法。当应用程序中抛出指定类型的异常时,Spring框架会自动调用相应的异常处理方法进行处理。异常处理方法可以根据实际需求进行异常处理逻辑,例如返回自定义的错误响应、记录日志等。这两个注解通常一起使用。
@ControllerAdvice用于定义全局异常处理类,而@ExceptionHandler用于定义具体的异常处理方法。全局异常处理类中可以包含多个异常处理方法,根据异常类型进行匹配和处理。使用
@ControllerAdvice和@ExceptionHandler可以集中处理应用程序中的异常,并提供统一的错误响应。这样可以提高代码的可维护性和可读性,并提供更好的用户体验。
3. 在全局异常处理类中定义其他异常处理方法,用于处理其他类型的异常。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
public ResponseEntity<ErrorResponse> handleCustomException(CustomException ex) {
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), ex.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(NullPointerException.class)
public ResponseEntity<ErrorResponse> handleNullPointerException(NullPointerException ex) {
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.BAD_REQUEST.value(), "Null value encountered");
return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}
// 其他异常处理方法
// ...
}
在上述示例中,handleNullPointerException方法用于处理NullPointerException类型的异常。根据具体的异常类型,可以定义多个异常处理方法。全局异常处理类中的异常处理方法可以返回自定义的错误响应实体类,以及指定合适的HTTP状态码。全局异常处理类会拦截应用程序中抛出的异常,并根据异常类型调用相应的异常处理方法进行处理。
通过定义全局异常处理类,可以集中处理应用程序中的异常,并提供统一的错误响应。这样可以提高代码的可维护性和可读性,并提供更好的用户体验。
154

被折叠的 条评论
为什么被折叠?



