Servlet异常处理

一、servlet抛出异常时,我们可以配置一个异常处理器(Servlet)来处理异常

二、首先创建一个Servlet

public class ErrorHandler extends HttpServlet {
	 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


	}
}

三、配置web.xml,首先配置ErrorHandler的信息,然后配置,确定需要捕获的类型,可以是状态码以及异常,然后设置指定重新转发的路径

	<servlet>
        <servlet-name>errorHandler</servlet-name>
        <servlet-class>com.xxf.demo.exception.ErrorHandler</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>errorHandler</servlet-name>
        <url-pattern>/ErrorHandler</url-pattern>
    </servlet-mapping>

    <error-page>
        <error-code>404</error-code>
        <location>/ErrorHandler</location>
    </error-page>

    <error-page>
        <exception-type>java.lang.Throwable</exception-type>
        <location>/ErrorHandler</location>
    </error-page>

四、ErrorHandler的使用

//在发生异常后,会将异常信息储存进request里进行转发,所以request里会多一些信息
public class ErrorHandler extends HttpServlet {
	 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		 //状态码
		Integer statusCode =(Integer) req.getAttribute("javax.servlet.error.status_code");
		//异常对应的Class类
        Class type=(Class)req.getAttribute("javax.servlet.error.exception_type");
        //
        String message=(String)req.getAttribute("javax.servlet.error.message");
        //
        String uri=(String)req.getAttribute("javax.servlet.error.request_uri");
        //异常类
        Throwable exception=(Throwable)req.getAttribute("javax.servlet.error.exception");
        //发出异常的servlet名字,不带包名
        String name=(String)req.getAttribute("javax.servlet.error.servlet_name");

	}	
}
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐