SpringBoot配置全局自定义异常
2018-09-01 05:42:27来源:博客园 阅读 ()
不同于传统集中时Springmvc 全局异常,具体查看前面的章节https://www.cnblogs.com/zwdx/p/8963311.html
对于springboot框架来讲,这里我就介绍一种
1、ExceptionHandlerAdvice
import javax.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; /** * 处理异常信息 * @author wdh * */ @ControllerAdvice @ResponseBody public class ExceptionHandlerAdvice extends MyExecption{ @ExceptionHandler(Exception.class) public ResultDTO handleException(Exception e,HttpServletResponse response) { return handler(e, response); } }
由于是前后端分离,所以使用@ResponseBody返回json
2、MyExecptionHandler
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONObject; /** * 自定义异常处理 * @author wdh * */ public class MyExecptionHandler{ public ResultDTO handler(Exception e,HttpServletResponse response){ ResultDTO result; if (e instanceof SysException) { result = handleSysException((SysException) e); } else if (e instanceof ServiceException) { result = handleServiceException((ServiceException) e); } else { result = handleSysException(new SysException(ERRORConstants.COMMON_SYSTEM_ERROR, e)); } responseOutWithJson(response, result); return result; } private ResultDTO handleSysException(SysException ex) { ResultDTO result = new ResultDTO(); result.setCode(ex.getCode()); if(StringUtil.isNotEmpty(ex.getMsg())){ result.setMessage(ex.getMsg()); }else { result.setMessage(MessageEnums.fromcode(ex.getCode())); } return result; } private ResultDTO handleServiceException(ServiceException ex) { ResultDTO result = new ResultDTO(); result.setCode(ex.getCode()); result.setMessage(MessageEnums.fromcode(ex.getCode())); return result; } protected void responseOutWithJson(HttpServletResponse response, Object responseObject) { JSONObject responseJSONObject = JSONObject.fromObject(responseObject); String jsonString = responseJSONObject.toString(); String code = responseJSONObject.getString("code"); if (ERRORConstants.COMMON_EXCEL_FORMAT_ERROR.equals(code)) { response.setContentType("text/html;charset=UTF-8"); } else { response.setContentType("application/json; charset=utf-8"); } response.setCharacterEncoding(GlobalConstants.DEFAULT_ENCODING); PrintWriter out = null; try { out = response.getWriter(); out.append(jsonString); } catch (IOException e) { } finally { if (out != null) { out.close(); } } } }
其中异常代码 ,为自己定义的GlobalConstants,MessageEnums
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
- nacos~配置中心功能~springboot的支持 2020-06-10
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash