MyException

@ControllerAdvice
public class MyException {

    @ExceptionHandler(UnauthorizedException.class)
    public String UnauthorizedException(RuntimeException e, HandlerMethod handlerMethod, HttpServletResponse resp) throws IOException {
        e.printStackTrace();
        //1. 获取到当前出现异常的方法
        //直接在参数定义HandlerMethod
        //2. 判断该方法上面是否有@ResponseBody注解
        //ResponseBody responseBody = handlerMethod.getMethodAnnotation(ResponseBody.class);

        //这个方法直接返回boolean类型
        boolean flag = handlerMethod.hasMethodAnnotation(ResponseBody.class);
        //如有,处理异步请求的异常
        if (flag){
            JsonResult jsonResult = new JsonResult(false, "操作失败,请咨询110");
            //将jsonResult格式化为json格式的字符串,存储到jsonString中
            String jsonString = JSON.toJSONString(jsonResult);
            //设置写回客户端的格式及字符集
            resp.setContentType("application/json;charset=UTF-8");
            //将json数据返回到客户端浏览器
            resp.getWriter().write(jsonString);
            return null;
        }
        //如果没有,处理页面跳转请求的异常
        else {
            return "common/nopermission";
        }

    }

    @ExceptionHandler(RuntimeException.class)
    public String runtimeException(HandlerMethod handlerMethod,HttpServletResponse response) throws IOException {
        //判断执行方法是否含有ResponseBody注解
        boolean flag = handlerMethod.hasMethodAnnotation(ResponseBody.class);
        if (flag){
            //含有,返回json格式的字符串
            JsonResult js = new JsonResult(false,"操作失败");
            String str = JSON.toJSONString(js);
            response.getWriter().write(str);
            return null;
        }else {
            //返回错误页面
            return "common/error";
        }

    }
}

 

posted @ 2020-12-05 15:19  y海涛  阅读(184)  评论(0编辑  收藏  举报