处理SERVLET中的错误和异常
应用服务器服务客户机请求时可能会遇到一些问题,如找不到所请求的资源或运行中的servlet引发异常。例如,在线购物门户中如果用户选择了当前缺货的物品要放入购物车中,就会出现问题,
这种情况下,浏览器窗口中将显示错误消息。您可以在servlet中进行异常处理操作来处理servlet引发的异常。您还可以自定义错误页面来显示异常和错误消息,并将这些消息记录到应用服务器日志文件中。
1. 处理servlet异常
Servelt API在javax.servlet包中定义了两个Exception类,分别是ServletException和UnavailableException。UnavailableException类是ServletException类的子类。
javax.servlet.ServletException类
javax.servlet.ServletException类在javax.servlet包中定义,是java.lang.Exception类的子类。该类定义了servlet在处理客户机请求时引发的servlet异常。该类包含getRootCause()方法,可返回java.lang.Throwable类型的对象以表示异常的根本原因。
javax.servlet.UnavailableException类
servlet暂时或永久不可用时,引发javax.servlet.UnavailableException Exception类。UnavailableException类提供的方法为:
- public boolean isPermanent():返回描述servlet是否永久不可用的布尔值。如果servlet永久不可用,该方法返回true。
- public int getUnavailableSeconds():返回servlet不可用的时间,单位为秒。
2. 处理错误
Web应用程序中的servlet能生成错误并引发异常。您可以通过发送表示各种错误类型的错误消息和状态代码来为用户提供关于这些错误和异常的信息。还可以创建自定义错误页面来格式化并显示关于所发生的错误和异常类型的信息。还可以将错误和异常纪录到服务器日志文件中,以便跟踪在Web应用程序中发生的错误和异常。
错误消息和状态代码
状态代码是应用服务器发送给客户机的关于客户机请求成功或失败的信息。应用服务器服务客户机请求时,通过响应对象向客户机浏览器返回状态代码。javax.servlet.http包的HttpServletResponse类定义了表示状态代码的各种字段。servlet可以使用这些字段发送状态代码。状态代码在逻辑上可分为以下五个类别:
- 信息:信息代码组表示关于收到请求且应用服务器正在处理该请求的消息。一些表示信息代码的HttpServletResponse字段有:
①SC_SWITCHING_PROTOCOLS:表示101状态代码,表示应用服务器切换了协议。
②SC_CONTINUE:表示100状态代码,表明客户机可继续与应用服务器交互。 - 成功:成功代码组表示成功消息,表明请求成功。一些表示成功代码的HttpServletResponse字段有:
①SC_OK:表示200状态代码,表明成功接收请求。
②SC_ACCEPTED:表示202状态代码,表明服务器已接受请求,正在处理该请求。 - 重定向:重定向代码组表示重定向消息,表明请求被重定向得到其他页面进行处理和服务。一些表示客户机错误代码的HttpServletResponse字段有:
①SC_BAD_REQUEST:表示400状态代码,表明客户机请求的语法不正确。
②SC_NOT_FOUND:表示404状态代码,表明客户机请求的资源不可用。
③SC_GONE:表示410状态代码,表明资源已不再可用。 - 服务器错误:服务器错误代码组表示服务器错误,表明服务器无法实现客户机请求。一些表示服务器错误代码的HttpServletResponse字段有:
①SC_