统一异常处理@ExceptionHandler
异常处理功能中用到的注解是:@ExceptionHandler(异常类型.class).
这个注解的功能是:自动捕获controller层出现的指定类型异常,并对该异常进行相应的异常处理.
比如我要在controller层中处理InsertMessageException类型异常,我就可以在controller层的类中定义以下方法:
@ExceptionHandler(InsertMessageException.class)public ModelAndView HandlerInsertMessageException(Exception ex){ModelAndView modelAndView= new ModelAndException();//相应的处理方法//...//...//比如说获取异常信息,并添加到modelandview中,跳转到指定异常页面modelAndView.addObject("exceptionMessage",ex.getMessage());modelAndView.setViewName("/exceptionPage");retu modelAndView;}
通过这样一个被@ExceptionHandler注解修饰的方法,就能捕获controller层所有抛出的InsertMessageException类型异常,并对异常进行相应的处理
如果想一个方法处理多种类型异常,就需要在@ExceptionHandler的括号中用大括号添加所想要处理的异常类型,用”,”隔开
例如:@ExceptionHandler({InsertException.class,DeleteException.class})
===
使用 @ControllerAdvice,不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调
@ControllerAdvice public class SpringExceptionHandler{/** * 全局处理Exception * 错误的情况下返回500 * @param ex * @param req * @retu */ @ExceptionHandler(value = {Exception.class}) public ResponseEntity<Object> handleOtherExceptions(final Exception ex, final WebRequest req) { TResult tResult = new TResult(); tResult.setStatus(CodeType.V_500); tResult.setErrorMessage(ex.getMessage()); retu new ResponseEntity<Object>(tResult,HttpStatus.OK); }}
作者:bcombetter
来源链接:https://www.cnblogs.com/xingzc/p/8623490.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。