JavaWeb之异常处理

异常处理

当servlet出现异常时,servlet容器使用exception-type元素来找到与抛出的异常类型相匹配的配置

复制代码
public class ExceptionHandler extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Throwable throwable = (Throwable) req.getAttribute("javax.servlet.error.exception");
        Integer code = (Integer) req.getAttribute("javax.servlet.error.status_code");
        String message = (String) req.getAttribute("javax.servlet.error.message");
        System.out.println("=========");
        System.out.println(throwable);
        System.out.println("=========");
        System.out.println(code);
        System.out.println("=========");
        System.out.println(message);
    }
}

<!-- 配置异常处理的servlet -->
<servlet>
    <servlet-name>ExceptionHandler</servlet-name>
    <servlet-class>com.zhanghe.study.servlet.ExceptionHandler</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ExceptionHandler</servlet-name>
    <url-pattern>/ExceptionHandler</url-pattern>
</servlet-mapping>
<!-- 配置哪些错误码会调用该异常处理类 -->
<error-page>
    <error-code>404</error-code>
    <location>/ExceptionHandler</location>
</error-page>
<!-- 配置哪些异常类型会调用该异常处理类 -->
<error-page>
    <exception-type>java.lang.ArithmeticException</exception-type>
    <location>/ExceptionHandler</location>
</error-page>

如果出现异常,会在请求域中设置相应的属性

可以使用request.getAttribute("")取出

复制代码
javax.servlet.error.status_code //错误码,Integer类型
javax.servlet.error.exception_type  // 异常类型,Class类型
javax.servlet.error.message    //异常信息,String类型
javax.servlet.error.request_uri  //出现异常的uri地址,String类型
javax.servlet.error.exception  //异常,Throwable类型
javax.servlet.error.servlet_name  //servlet名称,String类型

https://zhhll.icu/2021/javaweb/基础/9.异常处理/

本文由mdnice多平台发布

相关推荐
亲爱的非洲野猪16 分钟前
深入解析享元模式:用Java实现高性能对象复用
java·开发语言·享元模式
qq_4017004128 分钟前
Qt 事件处理机制
java·数据库·qt
rannn_1111 小时前
【Java项目】中北大学Java+数据库课设|校园食堂智能推荐与反馈系统
java·数据库·后端·课程设计·中北大学
NE_STOP1 小时前
SpringBoot-shiro-jwt-dubbo-redis分布式统一权限系统(完结)
java
zfj3211 小时前
java函数式接口 @FunctionalInterface用法
java·函数·function
TracyCoder1231 小时前
并发编程(二):Java原子类(Atomic Classes)全解析
java·原子类·atomic
野犬寒鸦2 小时前
从零起步学习MySQL || 第十六章:MySQL 分库分表的考量策略
java·服务器·数据库·后端·mysql
木风小助理2 小时前
JavaAtomicInteger底层实现深度解析
java
BD_Marathon2 小时前
搭建MyBatis框架之创建MyBatis的映射文件(五)
java·数据库·mybatis
一只叫煤球的猫2 小时前
为什么Java里面,Service 层不直接返回 Result 对象?
java·spring boot·面试