代码网 logo
AI

Springboot全局捕获异常+异常入库

唐某2020-05-07 13:14:17219
java 复制代码
    /**
     * 指定拦截的异常
     * 0.捕获所有异常,默认级别为RuntimeException,这里ExceptionHandler参数指定为Exception所有异常
     * @param request
     * @param response
     * @param e
     * @return
     * @throws Exception
     */
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public Object errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception{
        Map<String,String> map = new HashMap(2);
        response.setStatus(500);
        map.put("msg","服务器异常,异常信息:"+e.toString());
        //1.打印异常,可在日志里查看
        log.error("==================================================================");
        log.error(e.toString());
        log.error("==================================================================");
        //2.异常入库
        MyException myException = new MyException();
        myException.setIp(BasicUtil.getIpAddr(request));
        myException.setCreateDate(new Date());
        myException.setUrl(request.getRequestURL().toString());
        myException.setDescription(e.toString());
        myException.setUsername(
                (SecurityContextHolder.getContext().getAuthentication().getName()+"")
                        .replace("anonymousUser","未登录"));
        myExceptionService.insertSelective(myException);
        //3.返回异常
        return map;
    }

广告