在 Java 中,你可以使用全局异常处理器来捕获和处理整个应用程序中抛出的异常。
1.@RestControllerAdvice注解
@
RestControllerAdvice是 Spring 框架中用来处理 RESTful 服务的异常的注解。通过在类上添加 @
RestControllerAdvice注解,可以将其标记为全局异常处理器,并且类中的方法可以使用 @ExceptionHandler
注解来处理特定类型的异常。
这样一来,当 RESTful 服务中抛出异常时,@
RestControllerAdvice注解的类中的异常处理方法会被自动调用,然后返回适当的错误信息给客户端。这使得在整个应用程序范围内统一处理异常变得更加方便和灵活。
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
return new ResponseEntity<>("Internal Server Error", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
这段代码中,GlobalExceptionHandler类使用 @
RestControllerAdvice注解标记为全局异常处理器,而handleException 方法使用 @
ExceptionHandler注解来处理所有类型的异常,并返回适当的 HTTP 响应。
2.@ExceptionHandler注解
@ExceptionHandler注解是Spring框架中用于处理控制器中出现的异常的注解。当控制器方法中抛出异常时,@ExceptionHandler注解可以捕获该异常并提供一个统一的处理方式。
@ExceptionHandler注解可以添加到控制器中的方法上,用于指定处理特定类型异常的方法。通过指定异常类型作为该注解的参数,可以实现对特定异常的处理。例如:
@ExceptionHandler(Exception.class)
public String handleException(Exception ex) {
//处理异常的逻辑
return "error-page";
}
上述示例中,@ExceptionHandler注解指定处理Exception类及其子类的异常,当控制器方法中抛出该类型异常时,会调用handleException方法进行处理。方法参数ex是对应的异常对象。
另外,@ExceptionHandler注解还可以不指定参数,此时处理所有异常。例如:
@ExceptionHandler
public String handleAllExceptions(Exception ex) {
//处理所有异常的逻辑
return "error-page";
}