2021-05-12 14:32:11
簡單瞭解SpringMVC全域性例外處理常用方法
2020-09-23 12:00:20
專案中,可能會丟擲多個異常,我們不可以直接將異常的堆疊資訊展示給使用者,有兩個原因:
- 使用者體驗不好
- 非常不安全
所以,針對異常,我們可以自定義例外處理,SpringMVC 中,針對全域性異常也提供了相應的解決方案,主要是通過 @ControllerAdvice 和@ExceptionHandler 兩個註解來處理的。
以上傳大小超出限制為例,自定義異常,只需要提供一個例外處理類即可:
@ControllerAdvice//表示這是一個增強版的 Controller,主要用來做全域性資料處理 public class MyException { @ExceptionHandler(Exception.class) public ModelAndView fileuploadException(Exception e) { ModelAndView error = new ModelAndView("error"); error.addObject("error", e.getMessage()); return error; } }
在這裡:
- @ControllerAdvice 表示這是一個增強版的 Controller,主要用來做全域性資料處理
- @ExceptionHandler 表示這是一個例外處理方法,這個註解的引數,表示需要攔截的異常,引數為 Exception 表示攔截所有異常,這裡也可以具體到某一個異常,如果具體到某一個異常,那麼發生了其他異常則不會被攔截到。
- 異常方法的定義,和 Controller 中方法的定義一樣,可以返回 ModelAndview,也可以返回 String 或者 void
例如如下程式碼,指揮攔截檔案上傳異常,其他異常和它沒關係,不會進入到自定義例外處理的方法中來。
@ControllerAdvice//表示這是一個增強版的 Controller,主要用來做全域性資料處理 public class MyException { @ExceptionHandler(MaxUploadSizeExceededException.class) public ModelAndView fileuploadException(MaxUploadSizeExceededException e) { ModelAndView error = new ModelAndView("error"); error.addObject("error", e.getMessage()); return error; } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章