第3.54课 上课 Servlet进阶, Servlet生命周期, Servle…
</error-page>
动态的异常处理Servlet
配置
<!-- 指定TestException异常的处理方式 -->
<error-page>
<exception-type>com.yayadou.exception.TestException</exception-type>
<location>/ex</location>
</error-page>
<!-- 定义异常处理类 -->
<servlet>
<servlet-name>ExceptionServlet</servlet-name>
<servlet-class>com.yayadou.exception.ExceptionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ExceptionServlet</servlet-name>
<url-pattern>/ex</url-pattern>
</servlet-mapping>
异常处理类
//异常处理的Servlet
public class ExceptionServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("出现了异常");
response.getWriter().println("<br/>");
// 获取所有请求的属性名字
Enumeration<String> names = request.getAttributeNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
Object o = request.getAttribute(name);
response.getWriter().println(name);
response.getWriter().println("=");
response.getWriter().println(o);
response.getWriter().println("<br/>");
}
//获取异常类型
Class<?> cla = (Class<?>) request.getAttribute("javax.servlet.error.exception_type");
//获取异常的提示信息
String message = (String) request.getAttribute("javax.servlet.error.message");
//获取异常对象
Exception ex = (Exception) request.getAttribute("javax.servlet.error.exception");
response.getWriter().println("异常类型:" + cla.getName());
response.getWriter().println("<br/>");
response.getWriter().println("异常信息:" + message);
response.getWriter().println("<br/>");
//输出异常堆栈的信息
response.getWriter().println("异常堆栈<br/>");
StackTraceElement[] eles = ex.getStackTrace();
PrintWriter out = response.getWriter();
for(StackTraceElement ele : eles){
out.println(" at ");
out.print(ele.getClassName());
out.print(".");
out.print(ele.getMethodName());
out.print("(");
out.print(ele.getFileName());
out.print(":");
out.print(ele.getLineNumber());
out.print(")<br/>");
}
}
}
浙公网安备 33010602011771号