Spring异常集中处理和日志集中打印

摘要:
使用@ControllerAdvice和@ExceptionHandler处理Controller层的异常:@ControllerAdvicepublicclassGlobalExceptionHandler{privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(GlobalExceptionHandler.class);/***处理所有不可

使用@ControllerAdvice和@ExceptionHandler处理Controller层的异常:

@ControllerAdvice
public class GlobalExceptionHandler {

    private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    /**
     * 处理所有不可知的异常
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    AppResponse handleException(Exception e){
        // 记录日志
        LOGGER.error(e.getMessage(), e);
        // 统一返回值
        AppResponse response = new AppResponse();
        response.setFail("服务器错误");
        return response;
    }

    /**
     * 处理自定义异常
     * @param e
     * @return
     */
    @ExceptionHandler(CustomException.class)
    @ResponseBody
    AppResponse handleCustomException(CustomException e){
        LOGGER.error(e.getMessage(), e);

        AppResponse response = new AppResponse();
        response.setFail(e.getMessage());
        return response;
    }
}

对于需要给前台返回特定错误信息的异常,手动抛出CustomException,并添加错误信息,通过handleCustomException返回,其他异常信息通过handleException处理,返回服务器异常,所有异常均打印日志

免责声明:文章转载自《Spring异常集中处理和日志集中打印》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c#写word文档基础操作(自己控制样式)[转]MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

node中的request模块(http.get封装版)

1.下载并引入request cnpm install request --save; const request = require("request"); 2.基本使用 request({ url: url,//请求路径 method: "POST",//请求方式,默认为get headers: {//设置请求头...

ASP.NET之精通弹出窗口

作为Microsoft的最新建立动态Web网站的工具,ASP.NET相对于ASP和JSP在改变原始的Web编程方式方面有了长足的长进。它的代码与页面分离技术(CodeBehind)以及完善的Web服务器控件为程序员提供了一个更加符合传统编程的Web服务器端开发方式。但Web编程还是有着与传统编程不相同的特点,这些特点决定了ASP.NET编程中必须以一些特殊...

HttpServletResponse、页面文件下载、验证码

summarize 在创建Servlet时,会覆盖service方法或doGet()/doPost(),它俩都是 HTTPServletresponse这些方法都有俩参数,一个是请求request,一个是响应response,HttpServletResponse是ServletResponset的子接口, 浏览器发出http请求,会直接传给Tomcat,...

http协议的POST传数据

PostRequest使用StreamWriter对象写入请求流,不需要使用HttpUtility.UrlEncode显示转码,而下面的需要显示转码,还需要将参数转为字节码 蛋疼…………。 public static string PostRequest(string url, string postData) { HttpWebRequest httpW...

jsonp 跨域

适用场景:跨域传值 ajax端: $.ajax({    url:"XXXXX", dataType:'jsonp', data:{}, jsonp:'callbackparam', jsonp定义的callbackparam,会随机的向服务端发送一段字符串...

五:HttpServletResponse对象

一、HttpServletResponse对象介绍 HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。查看HttpServletResponse的API,可以看到这些相关的方法。 1.1、负责向客户端(浏览器)发送数据的相关方法    1.2、负责向客户端(浏览器)发送响应头的相...