之前處理工程異常,代碼中最常見的就是try-catch-finally,有時一個try,多個catch,覆蓋了核心業務邏輯
try{ .......... }catch(Exception1 e){ .......... }catch(Exception2 e){ ........... }catch(Exception3 e){ ........... }
- @ExceptionHandler:統一處理某一類異常,從而能夠減少代碼重復率和復雜度
1 @Controller 2 public class AccessController { 3 4 /** 5 * 異常頁面控制 6 * 7 * @param runtimeException 8 * @return 9 */ 10 @ExceptionHandler(RuntimeException.class) 11 public @ResponseBody 12 Map<String,Object> runtimeExceptionHandler(RuntimeException runtimeException) { 13 logger.error(runtimeException.getLocalizedMessage()); 14 15 Map model = new TreeMap(); 16 model.put("status", false); 17 return model; 18 } 19 20 }
當這個Controller中任何一個方法發生異常,一定會被這個方法攔截到。然后,輸出日志。封裝Map並返回,頁面上得到status為false。