在 Spring 中,可以使用@ControllerAdvice
注解来配置全局异常处理器,以下是具体步骤:
一、创建全局异常处理类
-
创建一个类,并使用
@ControllerAdvice
注解进行标注。import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import java.util.HashMap; import java.util.Map; @ControllerAdvice public class GlobalExceptionHandler { // 异常处理方法将在这里定义 }
二、定义异常处理方法
-
使用
@ExceptionHandler
注解来指定要处理的异常类型。例如,要处理所有的Exception
异常,可以这样写:@ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody public Map<String, Object> handleException(Exception e) { Map<String, Object> errorResponse = new HashMap<>(); errorResponse.put("message", "An unexpected error occurred."); errorResponse.put("error", e.getMessage()); return errorResponse; }
在这个方法中,当发生任何
Exception
异常时,会返回一个包含错误信息的 JSON 响应,并设置 HTTP 状态码为 500(内部服务器错误)。 -
你可以根据不同的异常类型定义多个异常处理方法。例如,处理特定的业务异常:
@ExceptionHandler(BusinessException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public Map<String, Object> handleBusinessException(BusinessException e) { Map<String, Object> errorResponse = new HashMap<>(); errorResponse.put("message", e.getMessage()); return errorResponse; }
三、异常处理逻辑
在异常处理方法中,你可以根据具体的需求进行错误信息的封装和返回。可以返回自定义的错误对象,或者直接返回一个包含错误信息的Map
等。
通过以上步骤,你就可以使用@ControllerAdvice
注解配置一个全局异常处理器,统一处理应用程序中的异常情况,提高应用的稳定性和可维护性。