?
本文檔使用 PHP中文網(wǎng)手冊(cè) 發(fā)布
當(dāng)與請(qǐng)求匹配的控制器處理請(qǐng)求時(shí),可能會(huì)發(fā)生意料之外的異常。
Spring提供了HandlerExceptionResolvers
來(lái)減輕這些異常帶來(lái)的痛苦。
HandlerExceptionResolvers
有點(diǎn)像在Web應(yīng)用程序描述符web.xml
中定義的異常映射(exception mappings),
但是它處理異常的方式更加靈活。它可以提供當(dāng)異常被拋出時(shí)是什么處理程序在執(zhí)行的信息。
更進(jìn)一步,一個(gè)以編程方式處理異常的途徑,讓你對(duì)于在請(qǐng)求被指向另一個(gè)URL(與使用按servlet的異常映射的最終結(jié)果一樣)之前如何恰當(dāng)?shù)捻憫?yīng)有了更多選擇。
實(shí)現(xiàn)HandlerExceptionResolver
接口很簡(jiǎn)單,
只需實(shí)現(xiàn)resolveException(Exception,Handler)
方法,
并返回一個(gè)ModelAndView
,除此之外,
也可以直接使用SimpleMappingExceptionResolver
。
這個(gè)解析器允許你取得任何可能被拋出的異常的類(lèi)名,并把它映射到一個(gè)視圖名。
這和Servlet API中提供的異常映射特性在功能上是相當(dāng)?shù)?,但是,它還允許對(duì)來(lái)自不同處理程序的異常實(shí)現(xiàn)更細(xì)粒度的異常映射。