2014-03-31 96 views
1

我打破我的頭這樣的:的Java抓被忽略

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)被拋出(如預期),然後捕獲第一個捕獲(如預期),然後重新拋出並被調用函數捕獲預計不會)。由於這個例外已經在這裏被捕獲,執行應該繼續。

我附上的截圖,你可以看到:在粉紅色

  • :我的斷點綠色
  • :作爲一個氣球我當前執行行
  • :當前類型的異常,其清楚地說,這是一個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

你的堆棧跟蹤表明你的異常被提出了? –

+2

顯然在別的地方也拋出異常。第一個例外,在屏幕截圖中,它不會逃脫catch塊。如果另一個被抓到某處,這意味着有兩個例外。 – Radiodef

回答

1

很顯然,還有另一種例外。

也許「消息」,在catch內部是空的,它是拋出一個新的NullPointerException?

+0

我覺得很蠢!,非常感謝你@Alfcope,消息從未實例化過。並感謝所有其他人! – Andres

+0

事情發生。我認爲每個人都至少犯了同樣的錯誤一次。 – alfcope