SpringBoot全局异常
Posted 陈彦斌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot全局异常相关的知识,希望对你有一定的参考价值。
全局异常处理
为什么要配全局异常?
- 不配全局服务端报错场景,1/0、空指针等
配置好处
- 统一的错误页面或错误码
- 对用户更友好
配置全局异常
第一步类添加注解
- @ControllerAdvicce,如果需要返回JSON数据,则方法需要加@ReponseBody
- @RestControllerAdvice,默认返回JSON数据,方法不需要加@ResponseBody
第二步方法添加处理器
- 捕获全局异常,处理所有不可知的异常
- @ExceptionHandler(value=Exception.class)
CustomExtHandler.java
package net.cyb.demo.handler; import net.cyb.demo.utils.JsonData; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletRequest; /** * 标记这是一个异常处理类 */ @RestControllerAdvice public class CustomExtHandler { @ExceptionHandler(value = Exception.class) JsonData HandlerException(Exception e, HttpServletRequest request){ return JsonData.buildError(-2,"服务端出问题了"); } }
JsonData.java
package net.cyb.demo.utils; /** * 接口返回工具类 */ public class JsonData { private int code; private Object data; private String msg; public JsonData() { } public JsonData(int code, Object data) { this.code = code; this.data = data; } public JsonData(int code, Object data, String msg) { this.code = code; this.data = data; this.msg = msg; } public static JsonData buildSuccess(Object data) { return new JsonData(0, data); } public static JsonData buildError(String msg) { return new JsonData(-1, "", msg); } public static JsonData buildError(int code, String msg) { return new JsonData(code, "", msg); } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } @Override public String toString() { return "JsonData{" + "code=" + code + ", data=" + data + ", msg=\'" + msg + \'\\\'\' + \'}\'; } }
以上是关于SpringBoot全局异常的主要内容,如果未能解决你的问题,请参考以下文章
Springboot集成Common模块中的的全局异常处理遇见的问题
springboot 使用@ControllerAdvice注解全局处理系统异常
springboot + @ControllerAdvice + @ExceptionHandler 实现全局异常拦截,不用