異常控制
??Author: 江南白衣
1.業務異常類
????? 1.所以業務異常類派生于BusinessException基類。
????? 2.原則上,要進行相同處理的異常分為一類,用ERROR_CODE標識不同。
????? 3.出錯信息統一寫在errors.properties,以ERROR_CODE為主鍵,支持i18N,由基類提供默認的getMessage()函數。
????? 參考BussinessException.java和OrderException.java。
2.Servlet規范里的異常控制
?2.1按error-code統一定義錯誤頁面
<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按異常類型定義單獨錯誤頁面
<error-page>
? <exception-type>org.sprngside.bookstore.UserNotFound</exception-type>
? <location>/userNotFound.jsp</location>
</error-page>
2.3 在JSP里單獨定義錯誤頁面
<@ errorPage="error.jsp">
3.Spring MVC里的異常控制
?? spring-mvc可在xxx-serverlet.xml里定義default和 按Excepiton類型影射的錯誤頁面, 和Servlet規范比,主要作了Spring特色的JSP路徑轉向和日志記錄.參見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會同時處理jsp,servlet,和spring拋過來的異常
???????? 其中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); 記錄整個異常棧
大盤預測
國富論
posted on 2007-09-13 11:23
華夢行 閱讀(1829)
評論(0) 編輯 收藏 所屬分類:
Spring