我对此感到失望:
protected void setParameters(HttpServletRequest request) {
try {
page = Integer.parseInt(request.getParameter("p"));
}
catch (NumberFormatException | NullPointerException e) {
messages.add("Invalid page.");
}
try {
status = Integer.parseInt(request.getParameter("s"));
}
catch (NumberFormatException | NullPointerException e) {
messages.add("Invalid status.");
}
}
在我将此方法放入超类之前,它按预期工作;但是现在当我有一个没有p参数的查询字符串时(例如),抛出异常(NumberFormatException)(如预期的那样),然后由第一个catch捕获(如预期的那样)然后重新抛出并被调用函数捕获(这不是预期的)。由于此处已经捕获了异常,因此执行应该继续。
我附上截图,你可以看到:
非常感谢任何想法
更新
谢谢,这是我的调用堆栈:Servlet> UserListHandler> setParameters
UserListHandler()是一个构造函数,如下所示:
Servlet看起来像这样:
我觉得有趣的是servlet捕获的异常是NullPointerException。
我的堆栈跟踪的顶部如下所示:
Mar 31, 2014 5:13:06 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [UserListServlet] in context with path [/App.Web] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
答案 0 :(得分:1)
很明显还有另一个例外。
也许“消息”,catch内部为null并且它抛出一个新的NullPointerException?