javascript
异常处理---SpringMVC学习笔记(十)
異常處理器:
springmvc在處理請(qǐng)求過程中出現(xiàn)異常信息交由異常處理器進(jìn)行處理,自定義異常處理器可以實(shí)現(xiàn)一個(gè)系統(tǒng)的異常處理邏輯。
異常處理思路:
系統(tǒng)中異常包括兩類:預(yù)期異常和運(yùn)行時(shí)異常RuntimeException,前者通過捕獲異常從而獲取異常信息,后者主要通過規(guī)范代碼開發(fā)、測(cè)試通過手段減少運(yùn)行時(shí)異常的發(fā)生。
系統(tǒng)的dao、service、controller出現(xiàn)都通過throws Exception向上拋出,最后由springmvc前端控制器交由異常處理器進(jìn)行異常處理,如下圖:
第一步:自定義異常類:
為了區(qū)別不同的異常通常根據(jù)異常類型自定義異常類,這里我們創(chuàng)建一個(gè)自定義系統(tǒng)異常,如果controller、service、dao拋出此類異常說明是系統(tǒng)預(yù)期處理的異常信息。
public class CustomException extends Exception {/** serialVersionUID*/private static final long serialVersionUID = -5212079010855161498L;public CustomException(String message){super(message);this.message = message;}//異常信息private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;} }第二步:自定義異常處理器:
public class CustomExceptionResolver implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) {ex.printStackTrace();CustomException customException = null;//如果拋出的是系統(tǒng)自定義異常則直接轉(zhuǎn)換if(ex instanceof CustomException){customException = (CustomException)ex;}else{//如果拋出的不是系統(tǒng)自定義異常則重新構(gòu)造一個(gè)未知錯(cuò)誤異常。customException = new CustomException("未知錯(cuò)誤,請(qǐng)與系統(tǒng)管理 員聯(lián)系!");}ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("message", customException.getMessage());modelAndView.setViewName("error");return modelAndView;}}第三步:編寫錯(cuò)誤頁(yè)面:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!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>錯(cuò)誤頁(yè)面</title></head> <body> 您的操作出現(xiàn)錯(cuò)誤如下:<br/> ${message } </body></html>第四步:在springmvc.xml配置全局異常處理器
<!-- 全局異常處理器只要實(shí)現(xiàn)了HandlerExceptionResolver接口的類就是全局異常處理器--><bean class=""></bean>第五步:異常測(cè)試
修改商品信息,id輸入錯(cuò)誤提示商品信息不存在。
修改controller方法“editItem”,調(diào)用service查詢商品信息,如果商品信息為空則拋出異常:
// 調(diào)用service查詢商品信息Items item = itemService.findItemById(id);if(item == null){throw new CustomException("商品信息不存在!");}如果與業(yè)務(wù)功能相關(guān)的異常,建議在service中拋出異常。
與業(yè)務(wù)功能沒有關(guān)系的異常,建議在controller中拋出。
上邊的功能,建議在service中拋出異常。
總結(jié)
以上是生活随笔為你收集整理的异常处理---SpringMVC学习笔记(十)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据回显---SpringMVC学习笔记
- 下一篇: 针对eclipse调式代码时打断点出现斜