package demo.utils; import com.alibaba.fastjson.JSON; import demo.controller.ProductController; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; /** * Controller全局错误捕获类 */ @RestControllerAdvice //拦截异常并统一处理 public class ExceptionIntercept { public static final String PLAT_ERROR = "PLAT_ERROR"; // Logger和LogManager导入的是org.apache.logging包 private static final Logger logger = LogManager.getLogger(ProductController.class); @ExceptionHandler(Exception.class) public MessagePack handler(Exception ex) { //返回错误数据包 MessagePack pack = new MessagePack(); pack.setCode(MessagePack.ERROR); pack.setMessage(ex.getMessage()); pack.setStatus(PLAT_ERROR); //同时记录错误日志 logger.error("Controller全局错误捕获类==>" + JSON.toJSONString(pack)); return pack; } }
package demo.utils; import java.io.Serializable; /** * 统一返回消息类 */ public class MessagePack implements Serializable { public static final long OK = 0; public static final long ERROR = -1; // 状态码 private long code; // 信息 private String message; // 携带的值 private Object object; // 状态信息 private String status; public long getCode() { return code; } public void setCode(long code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Object getObject() { return object; } public void setObject(Object object) { this.object = object; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } }
原文地址:https://www.cnblogs.com/smartsmile/p/11625792.html
时间: 2024-10-05 23:25:12