java web 中几种异常处理

全局异常映射:

<global-exception-mappings>

    <exception-mapping result="error"exception="java.lang.Exception"/>

</global-exception-mappings> 

局部异常映射:

<exception-mappings>

    <exception-mapping result="error"exception="java.lang.Exception"/>    

</exception-mappings> 

exception: 异常类型

result:指定Action出现该异常时,系统转入result属性所指向的结果。 

异常信息的输出:

<s:propertyvalue="exception"/>输出异常对象本身。

<s:propertyvalue="exception.message"/>输出异常对象的信息。

<s:propertyvalue="exceptionStack"/>输出异常对象本身。

 

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); 记录整个异常栈




——转自http://blog.sina.com.cn/timyuheng

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值