日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

@ControllerAdvice实现优雅地处理异常

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

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

統一異常處理

需要配合@ExceptionHandler使用。
當將異常拋到controller時,可以對異常進行統一處理,規定返回的json格式或是跳轉到一個錯誤頁面

//全局異常捕捉處理 @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","缺少必需參數:"+((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接口,可得到以下結果

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

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

@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; }

這樣子很方便吧~

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。