我們經(jīng)常會(huì)遇到一些設(shè)計(jì)的不好的應(yīng)用犀填,當(dāng)出現(xiàn)一些未知異常時(shí)辛慰,就顯示一個(gè)打印著錯(cuò)誤堆棧的網(wǎng)頁(yè)∈唬看到這些錯(cuò)誤堆棧信息往往用戶(hù)都會(huì)一頭霧水聪舒,我們會(huì)抱怨這個(gè)設(shè)計(jì)實(shí)在太不友好了。而且錯(cuò)誤堆棧信息由于暴露了后臺(tái)方法的調(diào)用關(guān)系虐急,對(duì)應(yīng)用來(lái)說(shuō)這是有一定潛在風(fēng)險(xiǎn)的。雖然在web.xml中可以配置處理異常的jsp頁(yè)面滔迈,但這個(gè)還是遠(yuǎn)遠(yuǎn)不夠的止吁。SpringMVC對(duì)錯(cuò)誤處理提供了更好的解決方案。
在SpingMVC的web應(yīng)用中燎悍,有兩種處理異常的方法敬惦。一種是使用HandlerExceptionResolver接口;一種是在Controller類(lèi)內(nèi)部使用@ExceptionHandler注解谈山。使用HandlerExceptionResolver接口可以實(shí)現(xiàn)全局異扯砩荆控制,并且SpringMVC提供了一個(gè)默認(rèn)的實(shí)現(xiàn)類(lèi)SimpleMappingExceptionResolver奏路。今天小博老師就給大家介紹一下該類(lèi)的使用方法畴椰。
比如,我們應(yīng)用中定義了一個(gè)異常類(lèi)BwfException鸽粉,我們希望無(wú)論什么時(shí)候出現(xiàn)該異常就跳轉(zhuǎn)到預(yù)定義的頁(yè)面:/WEB-INF/views/error/BwfExceptionView.jsp斜脂。那么spring的配置文件的寫(xiě)法如下所示:
defaultErrorView:定義默認(rèn)的異常處理頁(yè)面,當(dāng)該沒(méi)有注冊(cè)對(duì)應(yīng)的異常類(lèi)型處理時(shí)使用触机。
exceptionAttribute:定義異常處理頁(yè)面用來(lái)獲取異常對(duì)象的變量名帚戳,如果不設(shè)置,默認(rèn)名為exception儡首。
exceptionMappings:定義需要處理的異常片任,用類(lèi)名或完全路徑名作為key,異常頁(yè)面名作為value蔬胯。
注意:配置的異常界面均只包括主文件名对供,文件路徑和后綴已經(jīng)在viewResolver中指定。