servlet(4)

一、异常处理

当一个 Servlet 抛出一个异常时,Web 容器通过在web/xml中配置的<error-page>标签来处理异常;

<error-page>下面有两类三个标签,一类是<error-code>和<exception-type>两个标签,一个是<location>一个标签,共计三个。

<error-code>和<exception-type>是用来判断当前<error-page>捕获哪些异常,<error-code>是通过错误码捕获,如404,403之类的,<exception-type>是通过抛出的异常类捕获,如java.lang.NullPointerException之类的,如果想用一个<exception-type>捕获所以抛出的异常,可以使用上图所示的java.lang.Throwable,因为java所有的异常都是继承此类(目前只知道捕获不了404,感觉是因为404是找不到对应的servlet,并不是servlet抛出了java异常,所以捕获不了)

<location>指向你准备用来处理异常的Servlet ErrorHandler。

Servlet ErrorHandler和普通的servlet定义方式一致,web.xml中配置方式也和普通的servlet配置方式一致

<location>标签和<sevlet-mapping>的<url-pattern>的关系可以理解为,<location>可以理解为地址栏中除了servlet上下文的剩余部分连接,当servlet容器发现错误时,就会通过对应的<location>,像是在地址栏中又输入了一次新的连接(实际地址栏中的连接是不会变得),然后再次与web.xml中的<servlet-mapping>匹配,通过<servlet-mapping>找到对应的处理错误的servlet,不管你是不是用来处理错误的,也就是说只要正常的servlet能匹配上,也会继续执行。正常的servletA的映射是/a,处理异常的servletB的映射是/b,如果你的配置的<error-page>的<location>指向/a,那么servletA也会正常执行。

猜你喜欢

转载自www.cnblogs.com/yuby/p/10758954.html