多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > php教程 > Spring MVC的Controller統(tǒng)一異常處理:HandlerExceptionResolver

Spring MVC的Controller統(tǒng)一異常處理:HandlerExceptionResolver

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-05-05 08:37:20 閱讀次數(shù):3081次

出現(xiàn)異常其實(shí)不可怕,可怕的是出現(xiàn)了異常,你卻不知道,也沒(méi)有進(jìn)行異常處理。
Spring MVC的Controller出現(xiàn)異常的默許處理是響應(yīng)1個(gè)500狀態(tài)碼,再把毛病信息顯示在頁(yè)面上,如果用戶看到這樣的頁(yè)面,1定會(huì)覺(jué)得你這個(gè)網(wǎng)站太LOW了。
要解決Controller的異常問(wèn)題,固然也不能在每一個(gè)處理要求的方法中加上異常處理,那樣太繁瑣。Spring MVC提供了1個(gè)HandlerExceptionResolver接口,可用于統(tǒng)1異常處理。

HandlerExceptionResolver接口

public interface HandlerExceptionResolver { ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex); }

HandlerExceptionResolver接口中定義了1個(gè)resolveException方法,用于處理Controller中的異常。Exception ex參數(shù)即Controller拋出的異常。返回值類型是ModelAndView,可以通過(guò)這個(gè)返回值來(lái)設(shè)置異常時(shí)顯示的頁(yè)面。

實(shí)現(xiàn)HandlerExceptionResolver

HandlerExceptionResolver是1個(gè)interface,還需要定義1個(gè)實(shí)現(xiàn)類,來(lái)實(shí)現(xiàn)異常出現(xiàn)后的邏輯。

public class MyExceptionResolver implements HandlerExceptionResolver { private ExceptionLogDao exceptionLogDao; @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { // 異常處理,例如將異常信息存儲(chǔ)到數(shù)據(jù)庫(kù) exceptionLogDao.save(ex); // 視圖顯示專門(mén)的毛病頁(yè) ModelAndView modelAndView = new ModelAndView("errorPage"); return modelAndView; } }

上面代碼實(shí)現(xiàn)了HandlerExceptionResolver類的resolveException方法。出現(xiàn)異常時(shí),會(huì)將異常信息存儲(chǔ)到數(shù)據(jù)庫(kù),并顯示專門(mén)的毛病頁(yè)面。
固然,還有1些其他經(jīng)常使用的異常處理方法,例如通過(guò)javamail將異常報(bào)警發(fā)送給相干人員。總之,出現(xiàn)的異常要能被相干人員看到,這樣才能不斷完善代碼。

配置

最后,還需要將自己的HandlerExceptionResolver實(shí)現(xiàn)類配置到Spring配置文件中,或加上@Component注解。

<bean class="com.xxg.MyExceptionResolver" />

至此,MyExceptionResolver就能夠處理Controller拋出的異常了。

相干問(wèn)題

HandlerExceptionResolver能處理哪些異常?

HandlerExceptionResolver只能處理所有的Exception,也就是HTTP狀態(tài)碼是500的異常,不能處理404、400等其他狀態(tài)碼對(duì)應(yīng)的問(wèn)題。

HandlerExceptionResolver和web.xml中配置的error-page會(huì)有沖突嗎?

web.xml中配置error-page一樣是配置出現(xiàn)毛病時(shí)顯示的頁(yè)面:

<error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page>

如果resolveException返回了ModelAndView,會(huì)優(yōu)先根據(jù)返回值中的頁(yè)面來(lái)顯示。不過(guò),resolveException可以返回null,此時(shí)則展現(xiàn)web.xml中的error-page的500狀態(tài)碼配置的頁(yè)面。
當(dāng)web.xml中有相應(yīng)的error-page配置,則可以在實(shí)現(xiàn)resolveException方法時(shí)返回null。
API文檔中對(duì)返回值的解釋:

return a corresponding ModelAndView to forward to, or null for default processing.

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美最猛性xxxxx短视频 | 一区二区三区精品国产欧美 | 欧美精品99久久久久久人 | 国产福利在线看 | 亚洲成人综合网站 | 亚洲天堂2013| 色诱久久av | 成人亚洲在线观看 | 亚洲精品一区二区乱码在线观看 | 亚洲成a人片777777网站 | 波多野结衣一区二区三区88 | 亚欧洲精品bb| 欧美国产日韩久久久 | 在线二区| 三级不卡视频 | 色综合久久久高清综合久久久 | 欧美另类老人xxxx | 欧美成人h版整片合集 | 24小时免费观看www日本 | 免费观看影视传媒公司 | 久久久久久日本一区99 | 白嫩美女一级毛片免费看 | 亚洲精品性夜夜夜 | 亚洲美女一区 | 最近中文字幕免费mv视频8 | 久久久久色 | 一区二区三区免费视频播放器 | 国产成人福利美女观看视频 | 91在线一区二区三区 | 1区2区| 亚洲在线免费 | 国产精品亚洲国产三区 | 色聚网 | 欧美极品videosvideo激情 欧美极品video粗暴 | 精品久久久久久久一区二区伦理 | 国产欧美日本在线 | 亚洲区视频在线观看 | 伊人欧美 | 天天鲁一鲁| 看黄免费网站 | 日本精品久久久久中文字幕8 |