不同于传统集中时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 MyExecptionHandler{ @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

SpringBoot配置全局自定义异常的更多相关文章

  1. (办公)springboot配置全局异常

    项目用到了springboot,本来很高兴,但是项目里什么东西都没有,验证,全局异常这些都需要自己区配置.最近springboot用的还是蛮多的,我还是做事情,把经验发表一下.全局统一的异常,首先异常 ...

  2. SpringBoot(6) SpringBoot配置全局异常

    1.全局异常 @ControllerAdvice 如果是返回json数据 则用 RestControllerAdvice,就可以不加 @ResponseBody //捕获全局异常,处理所有不可知的异常 ...

  3. 【spring】-- springboot配置全局异常处理器

    一.为什么要使用全局异常处理器? 什么是全局异常处理器? 就是把错误异常统一处理的方法. 应用场景: 1.当你使用jsr303参数校验器,如果参数校验不通过会抛异常,而且无法使用try-catch语句 ...

  4. springboot2.x如何配置全局自定义异常

    为什么要捕获异常? 我们开发中,经常运行时,代码会报错,这时候我们有可能抛出异常,而不是用try..catch来解决.而且现在前后端分离,如果不捕获异常的话,前端那边的人估计会被报的错搞得焦头烂额的. ...

  5. (入门SpringBoot)SpringBoot配置全局异常(五)

    Spring的全局异常,用于捕获程序员没有捕获的异常.具体请看下面代码: 1.ControllerAdvice拦截异常,统一处理.通过Spring的AOP来管理. @ControllerAdvicep ...

  6. Spring Boot配置全局异常捕获

    1 SpringBoot配置全局的异常捕获 项目的说明 配置thymeleaf作为视图模板 ExceptionController.java模拟测试用 MyAjaxExceptionHandler.j ...

  7. springboot配置详解

    springboot配置详解 Author:SimpleWu properteis文件属性参考大全 springboot默认加载配置 SpringBoot使用两种全局的配置文件,全局配置文件可以对一些 ...

  8. SpringBoot配置(2) slf4j&logback

    SpringBoot配置(2) slf4j&logback 一.SpringBoot的日志使用 全局常规设置(格式.路径.级别) SpringBoot能自动适配所有的日志,而且底层使用slf4 ...

  9. SpringBoot配置(1) 配置文件application&yml

    SpringBoot配置(1) 配置文件application&yml 一.配置文件 1.1 配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的. application ...

随机推荐

  1. 采用 ITextPDF 类库测试向 PDF 中加入图片的示例

    package com.smbea.image; import com.artup.util.image.ImageUtil; import com.itextpdf.text.*; import c ...

  2. JS图片赖加载例子

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. JSP初学者4

    Filter可认为是Servlet的“加强版”,他主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的 处理链. 使用Filter完整的流程是:Filte ...

  4. Java NIO(四) Scatter/Gather

    Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作.分散(sc ...

  5. Java NIO(三) Buffer

    Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...

  6. eclipse 误删文件的恢复,代码的恢复

    误删除文件的恢复 在用eclipse进行代码编写操作时,有时会误删除文件或者文件包.通过eclipse的恢复文件功能可以恢复误删除的文件. 具体步骤为: 1.选择误删除文件在eclipse所在包(文件 ...

  7. Java Web:主动和被动方式检测安全的框架

    对于某些敏感的系统例如支付.交易需要为其加固,有必要将可能的攻击情况考虑进来加以防范,于是有了这么一个简易的安全框架.在前辈的代码上( 详见 :http://blog.csdn.net/zhongwe ...

  8. 简单记录一下http请求的7个步骤

    1.建立TCP连接 2.客户端发送请求命令 3.客户端发送请求头信息 4.服务端应答请求,返回版本号和状态码 5.服务端应答头信息 6.服务端向客户端发送数据 7.服务器关闭TCP连接(Connect ...

  9. jquery表单

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  10. 我的HTML总结之常用基础便签

    HTML:是Hyper Text Markup Language(超级文本标记语言)的缩写,HTML不是一种程序,只是一种控制网页中数据显示的标识语言. HTML由一组标签组成. HTML的基本结构 ...