異常控制
??Author: 江南白衣
1.業(yè)務(wù)異常類
????? 1.所以業(yè)務(wù)異常類派生于BusinessException基類。
????? 2.原則上,要進(jìn)行相同處理的異常分為一類,用ERROR_CODE標(biāo)識(shí)不同。
????? 3.出錯(cuò)信息統(tǒng)一寫(xiě)在errors.properties,以ERROR_CODE為主鍵,支持i18N,由基類提供默認(rèn)的getMessage()函數(shù)。
????? 參考BussinessException.java和OrderException.java。
2.Servlet規(guī)范里的異常控制
?2.1按error-code統(tǒng)一定義錯(cuò)誤頁(yè)面
<error-page>
? <error-code>404</error-code>
? <location>/404.jsp</location>
</error-page>
<error-page>
? <error-code>500</error-code>
? <location>/error.jsp</location>
</error-page>
2.2按異常類型定義單獨(dú)錯(cuò)誤頁(yè)面
<error-page>
? <exception-type>org.sprngside.bookstore.UserNotFound</exception-type>
? <location>/userNotFound.jsp</location>
</error-page>
2.3 在JSP里單獨(dú)定義錯(cuò)誤頁(yè)面
<@ errorPage="error.jsp">
3.Spring MVC里的異常控制
?? spring-mvc可在xxx-serverlet.xml里定義default和 按Excepiton類型影射的錯(cuò)誤頁(yè)面, 和Servlet規(guī)范比,主要作了Spring特色的JSP路徑轉(zhuǎn)向和日志記錄.參見(jiàn)bookstore-servlet.xml
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
??????? <property name="defaultErrorView" value="/error.jsp"/>
??????? <property name="exceptionMappings">
??????????? <props>
??????????????? <prop key="org.springside.framework.base.BusinessException">/businessError.jsp</prop>
??????????? </props>
??????? </property>
??? </bean>
4. error.jsp的處理
???????? error.jsp會(huì)同時(shí)處理jsp,servlet,和spring拋過(guò)來(lái)的異常
???????? 其中jsp的異常在exception 變量中.
???????? servlet的異常在(Exception)request.getAttribute("javax.servlet.error.exception")
???????? spring的異常在(Exception) request.getAttribute("exception")
???????? 使用 (String) request.getAttribute("javax.servlet.error.request_uri")獲得 request_uri
?????????使用 logger.error(exception.getMessage(), exception); 記錄整個(gè)異常棧
大盤(pán)預(yù)測(cè)
國(guó)富論
posted on 2007-09-13 11:23
華夢(mèng)行 閱讀(1829)
評(píng)論(0) 編輯 收藏 所屬分類:
Spring