Spring 註解學習手札(八)補遺——@ExceptionHandler
阿新 • • 發佈:2019-02-02
Spring註解,改變了我的開發思路。前段時間,用@RequestBody,@ResponseBody,不費吹灰之力就解決了JSon自動繫結。接著就發現,如果遇到RuntimeException,需要給出一個預設返回JSON。
當這個Controller中任何一個方法發生異常,一定會被這個方法攔截到。然後,輸出日誌。封裝Map並返回,頁面上得到status為false。就這麼簡單。
或者這個有些有些複雜,來個簡單易懂的,上程式碼:
Java程式碼
以前都是用SimpleMappingExceptionResolver攔截實現,今天偶爾看下資料,@ExceptionHandler,就把這個異常給攔截了,太方便了!
直接上程式碼:
- @Controller
- public class AccessController {
- /**
- * 異常頁面控制
-
*
- * @param runtimeException
- * @return
- */
- @ExceptionHandler(RuntimeException.class)
- public @ResponseBody
- Map<String,Object> runtimeExceptionHandler(RuntimeException runtimeException) {
- logger.error(runtimeException.getLocalizedMessage());
-
Map model = new
- model.put("status", false);
- return model;
- }
- }
當這個Controller中任何一個方法發生異常,一定會被這個方法攔截到。然後,輸出日誌。封裝Map並返回,頁面上得到status為false。就這麼簡單。
或者這個有些有些複雜,來個簡單易懂的,上程式碼:
Java程式碼
- @Controller
- public class AccessController {
- /**
- * 異常頁面控制
- *
-
* @param runtimeException
- * @return
- */
- @ExceptionHandler(RuntimeException.class)
- public String runtimeExceptionHandler(RuntimeException runtimeException,
- ModelMap modelMap) {
- logger.error(runtimeException.getLocalizedMessage());
- modelMap.put("status", IntegralConstant.FAIL_STATUS);
- return "exception";
- }
- }