SpringMVC全域性異常處理
阿新 • • 發佈:2018-12-16
當使用ssm框架構建系統時,可以構建一個全域性異常處理器,它是SpingMVC定義的一個異常處理器,一個系統中只能配置一個。
使用方法: 自定義一個異常處理類,需要實現一個介面HandlerExceptionResolver,並實現裡面的resolveException方法,最後,需要在spingMVC配置檔案中對這個異常處理類進行配置,將這個類載入到spring容器中。
在編碼過程中,如果dao層出現了異常,可以直接拋向service,再從service層拋往controller層,在controller層出現異常之後,程式會自動進入到異常處理類裡面的resolveException方法,在這個方法中,可以進行相關的處理,如:將錯誤資訊使用log4j輸出到日誌檔案,跳轉到一個有好的異常頁面等。
自定義異常類:
/** * 全域性異常處理器 * * @author Administrator */ public class GlobalExceptionReslove implements HandlerExceptionResolver { //獲取log4j的物件 private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionReslove.class); @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex) { //控制檯輸出錯誤資訊 ex.printStackTrace(); //寫入日誌檔案 logger.error("系統發生異常", ex); //這裡可以將異常資訊傳送郵件或者傳送簡訊給相關處理人 //展示友好的錯誤頁面 ModelAndView mv = new ModelAndView(); mv.addObject("message", "系統發生異常,請稍後重試..."); mv.setViewName("error/exception"); return mv; } }
SpringMVC配置檔案的配置:
<!-- 配置全域性異常處理器 -->
<bean class="cn.dss.exception.GlobalExceptionReslove"/>
這裡使用了log4j來對日誌進行處理,它的使用方法時: 1.需要在src/main/resources下面建立一個log4j.properties檔案,一定要是在這個目錄下,使用這個檔名,這樣log4j能自動載入這個配置檔案 2.log4j.properties的內容
log4j.rootLogger=INFO,A3,STDOUT log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n log4j.appender.A3=org.apache.log4j.RollingFileAppender log4j.appender.A3.file=logs/server.log log4j.appender.A3.MaxFileSize=1024KB log4j.appender.A3.MaxBackupIndex=10 log4j.appender.A3.layout=org.apache.log4j.PatternLayout log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
3.加入相關的依賴
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>