日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

异常处理---SpringMVC学习笔记(十)

發(fā)布時(shí)間:2023/12/20 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异常处理---SpringMVC学习笔记(十) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

異常處理器:

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。