日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

@ControllerAdvice实现优雅地处理异常

發(fā)布時間:2025/3/12 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 @ControllerAdvice实现优雅地处理异常 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

@ControllerAdvice,是Spring3.2提供的新注解,它是一個Controller增強(qiáng)器,可對controller中被 @RequestMapping注解的方法加一些邏輯處理。最常用的就是異常處理

統(tǒng)一異常處理

需要配合@ExceptionHandler使用。
當(dāng)將異常拋到controller時,可以對異常進(jìn)行統(tǒng)一處理,規(guī)定返回的json格式或是跳轉(zhuǎn)到一個錯誤頁面

//全局異常捕捉處理 @ControllerAdvice public class CustomExceptionHandler {@ResponseBody@ExceptionHandler(value = Exception.class)public Map errorHandler(Exception ex) {Map map = new HashMap();map.put("code", 400);//判斷異常的類型,返回不一樣的返回值if(ex instanceof MissingServletRequestParameterException){map.put("msg","缺少必需參數(shù):"+((MissingServletRequestParameterException) ex).getParameterName());}else if(ex instanceof MyException){map.put("msg","這是自定義異常");}return map;} } //自定義異常類 @Data public class MyException extends RuntimeException {private long code;private String msg;public MyException(Long code, String msg){super(msg);this.code = code;this.msg = msg;}public MyException(String msg){super(msg);this.msg = msg;} } @RestController public class TestController {@RequestMapping("testException")public String testException() throws Exception{throw new MissingServletRequestParameterException("name","String");}@RequestMapping("testMyException")public String testMyException() throws MyException{throw new MyException("i am a myException");} }

分別訪問testException和testMyException接口,可得到以下結(jié)果

{"msg":"缺少必需參數(shù):name","code":400} {"msg":"這是自定義異常","code":400}

如果不需要返回json數(shù)據(jù),而要渲染某個頁面模板返回給瀏覽器,那么可以這么實現(xiàn):

@ExceptionHandler(value = MyException.class) public ModelAndView myErrorHandler(MyException ex) {ModelAndView modelAndView = new ModelAndView();//指定錯誤頁面的模板頁modelAndView.setViewName("error");modelAndView.addObject("code", ex.getCode());modelAndView.addObject("msg", ex.getMsg());return modelAndView; }

這樣子很方便吧~

總結(jié)

以上是生活随笔為你收集整理的@ControllerAdvice实现优雅地处理异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。