Java catch被忽略了

时间:2014-03-31 22:59:09

标签: java exception try-catch

我对此感到失望:

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捕获(如预期的那样)然后重新抛出并被调用函数捕获(这不是预期的)。由于此处已经捕获了异常,因此执行应该继续。

我附上截图,你可以看到:

    粉红色的
  • :我的断点
  • 绿色:我当前的执行行
  • 作为气球:当前类型的异常明确表示它是NumberFormatException

enter image description here

非常感谢任何想法

更新

谢谢,这是我的调用堆栈:Servlet> UserListHandler> setParameters

UserListHandler()是一个构造函数,如下所示:

enter image description here

Servlet看起来像这样:

enter image description here

我觉得有趣的是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

1 个答案:

答案 0 :(得分:1)

很明显还有另一个例外。

也许“消息”,catch内部为null并且它抛出一个新的NullPointerException?