ServletException过去,当Servlet中的某些东西出现问题时,我一直在扔s,大多只是将异常包装进去ServletException.
现在我认为实际上最好不要抛出一个ServletException但是要回应response.sendError(sc)并使用正确的HTTP状态代码.
如果我不能使用reponse.sendError(IOException)发送错误,我将其包装成IOExceptiona ServletException.
以上是更好的回应方式吗?什么时候可以抛出一个ServletException?
pha*_*cle 23
我刚刚得出了与@alamar相反的结论.我的情况是编写一个REST样式的servlet,由Oracle数据库中的代码调用,而不是由人类调用.
我想在请求信息无效或丢失时将HTTP代码400 Bad Request返回给调用者.抛出a ServletException导致容器返回500内部服务器错误,该错误指出服务器有问题,而不是请求.
这是我采用的解决方案.
RequestException扩展的简单异常类Exception.new RequestException(message).抓住RequestExceptionservlet的doPost方法并调用HttpServletResponse.sendError()如下:
try {
validateRequest(request);
// Do stuff with a valid request.
} catch (RequestException e) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)消息将返回给调用者,就像它一样ServletException.
最好扔一个ServletException.
您可以稍后使用error-page指令实际捕获此异常web.xml,并执行适当的操作:向用户显示一个奇特的错误页面,将异常连同堆栈跟踪一起发送给开发人员,将其写入日志等等.
如果您只是使用sendError(),则不能在不同程度上这样做.
| 归档时间: |
|
| 查看次数: |
18520 次 |
| 最近记录: |