全局异常处理

全局异常处理类

在日常代码编写中常常要写try{}catch{},来将代码中的异常抛出,即影响美观,又影响理解,在springboot中可以使用@ControllerAdvice 来注解控制类,并在处理异常类中使用@ExceptionHandler来指定异常类型,即可对该异常进行抓取,这样就不需要在普通的控制层代码中进行trycatch

实战

控制类GlobalExceptionHandler

在这个控制类中对异常栈进行处理,方便排查问题

这样返回的对应数据映射如下

msg:异常类型

fileName:抛出异常所在的类

className:抛出异常所在类的类路径

lineNumber:抛出异常代码行

methodName:排除异常代码所属方法
@ControllerAdvice
public class GlobalExceptionHandler {
    private Log log = LogFactory.getLog(FundController.class);

    /**
     * 处理其他异常
     *
     * @param req
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public DataGridView exceptionHandler(HttpServletRequest req, Exception e) {
        DataGridView dataGridView = new DataGridView();
        e.printStackTrace();
        StackTraceElement[] errorList = e.getStackTrace();
        dataGridView.setMsg(e.toString());
        dataGridView.setData(errorList[0]);
        return dataGridView;
    }
}

异常方法/testerror

    @RequestMapping("testerror")
    public DataGridView testerror(String stockId) {
        DataGridView dataGridView = null;
        //执行如下代码就会抛出异常,因为此时dataGridView未指定内存地址,调用set方法会抛出空指针异常
        dataGridView.setCode(100);
        return dataGridView;
    }

调用异常方法返回:

image-20201219160719888

posted @ 2020-12-19 16:08  纵情95  阅读(287)  评论(0)    收藏  举报