SpringMVC-異常處理

在開發時,我們經常會遇到異常,通常可以分爲預期異常與運行時異常兩類,有一些異常是系統異常,而有一些異常卻是一些未知的錯誤,在SpringMVC中,可以通過異常處理器的配置對這兩種異常進行處理。

思路:在dao層、Service層、Controller層依次通過異常拋出(throws Ecception),最後通過springmvc的前端控制器交給異常處理器進行處理。

在SpringMVC中,我們可以通過全局異常處理器對異常進行統一的處理。

步驟如下:

自定義異常類

在開發中會出現很多的異常信息,那麼我們需要自己針對不同的異常類型進行定義,而後通過異常處理器獲取異常信息進行拋出顯示,此類繼承於Exception,則系統拋出的異常均可捕獲到,通過此類即可對系統產生的異常進行捕獲展示,如下(繼承於Exception):

package com.sw.exception;
/*
 *@Author swxctx
 *@time 2017年5月26日
 *@Explain:自定義異常類,針對與其的異常在系統中拋出
 */
public class DataException extends Exception{
	
	private static final long serialVersionUID = 1L;
	public String messages;//異常信息
	
	public DataException(String messages) {
		super(messages);
		this.messages = messages;
	}

	public String getMessages() {
		return messages;
	}

	public void setMessages(String messages) {
		this.messages = messages;
	}
}

全局異常處理器

全局的異常處理器主要完成如下功能:

1、解析異常信息

2、判斷異常信息是否爲系統自帶的異常信息,若爲系統自定義異常信息,那麼通過自定義異常類直接取出異常信息進行顯示,如果不是則構造一個自定義異常類型。

在SpringMVC中提供了一個HandlerExceptionResolver,通過繼承該接口,我們就可以對異常信息進行相關的處理,代碼如下:

package com.sw.exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

/*
 *@Author swxctx
 *@time 2017年5月26日
 *@Explain:全局異常處理器
 */
public class DataExceptionResolver implements HandlerExceptionResolver{

	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
			Exception exception) {
		DataException dataException = null;
		//是否爲系統異常
		if (exception instanceof DataException) {
			//拋出系統異常
			dataException = (DataException) exception;
		}else{
			//未知異常
			dataException = new DataException("未知異常...");
		}
		//錯誤信息
		String messages = dataException.getMessages();
		ModelAndView modelAndView = new ModelAndView();
		
		//錯誤信息傳到頁面
		modelAndView.addObject("messages", messages);
		//跳轉到錯誤頁面
		modelAndView.setViewName("error");
		return modelAndView;
	}

}

如上代碼所示,通過繼承接口,首選對異常信息進行解析,判斷其是不是系統異常,如果是系統異常則通過之前定義的異常類獲取異常信息拋出到頁面,如果不是,則自定義了"未知異常..."拋出。


springmvc.xml配置

在配置文件中我們只需要引入全局異常處理器即可:

<!-- 全局異常處理器 -->
	<bean class="com.sw.exception.DataExceptionResolver"></bean>

Jsp頁面異常信息顯示

系統發生異常後,需要通過頁面顯示錯誤,如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>異常提示</title>
</head>
  <body>
   ${messages }
  </body>
</html>


結語:通過上述的配置,在系統運行時若出現系統異常,則會通過異常類獲取異常信息顯示系統的異常信息,如果是未知異常,那麼則會在頁面顯示“未知異常”字樣,總之,將異常分爲兩類進行處理就可以了。








發佈了436 篇原創文章 · 獲贊 106 · 訪問量 57萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章