博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC 处理异常的3种方式
阅读量:6331 次
发布时间:2019-06-22

本文共 1621 字,大约阅读时间需要 5 分钟。

三种方式

  • @ExceptionHandler标注的方法被定义为处理指定类型异常;
  • @ResponseStatus标注的方法执行,会修改响应头中的状态码;
  • Spring会把@ControllerAdvice的类内部使用@ExceptionHandler方法应用到所有的 @RequestMapping注解的方法上

ExceptionHandler注解方式

注:@ExceptionHandler标注的方法,方法签名灵活、多变。被@ResponseStatus注解的方法将会修改相应状态码,而使用@ResponseBody可以返回json格式的数据,再供前端处理

/**     * 用户注册     * @param user     * @return     */    @GetMapping("/register")    public String register(User user){        Assert.notNull(null,"request is null");        userService.register(user);        return "success";    }    /**     * 当前控制器的异常处理     *///    @ResponseStatus(value = HttpStatus.BAD_REQUEST,reason = "参数异常")    @ResponseBody    @ExceptionHandler(Exception.class)    public String exceptionHandler(RuntimeException e){        // 不做任何事或者可以做任何事        return e.getMessage();    }

全局异常处理

@ControllerAdvicepublic class GlobalExceptionHandler {    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);    public GlobalExceptionHandler() {    }    @ExceptionHandler({Exception.class})    public String defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {        log.error("---BaseException Handler---Host {} invokes url {} ERROR: ", new Object[]{req.getRemoteHost(), req.getRequestURL(), e});        return JsonResUtil.respJson(CodeEnum.SERVICE_ERROR);    }    @ExceptionHandler({AppException.class})    public String jsonErrorHandle(HttpServletRequest req, AppException e) {        log.warn("---BaseException Handler---Host {} invokes url {}  ", req.getRemoteHost(), req.getRequestURL());        return JsonResUtil.respJson(e.getCode(), e.getMessage());    }}

文章参考:

转载地址:http://wsboa.baihongyu.com/

你可能感兴趣的文章
linux下sprintf_s函数的替代
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Microsoft.Web.Administration.ServerManager启用IIS的ISAPI
查看>>
关于批量数据更新的问题(C#高性能)
查看>>
[转]Reactor模式,或者叫反应器模式
查看>>
Visual Studio Test Project的一个小问题
查看>>
How to Uninstall/Reinstall 10g CRS Clusterware?
查看>>
Java数据导入(读)Excel文件 解析
查看>>
webSVN客户端(转) - initOS的日志 - 网易博客
查看>>
linux touch命令
查看>>
题目1471: A+B without carry
查看>>
2013 年4月6日
查看>>
Linq分页
查看>>
ExtJs4表单textfield中的验证使用以及自定义的vtype的使用
查看>>
mysql数据导入到infobright
查看>>
C/C++文件——数据写入、读取
查看>>
方法返回javascript学习实录 之二(数组操作等等utils) --刘啸尘
查看>>
web页面中常见可用字符以及HTML实体
查看>>
透明设置Android:将activity设置为弹出式的并设置为透明的
查看>>
幸福框架:发布订阅模式 之 同步订阅、异步订阅和离线订阅
查看>>