2013-03-02 82 views
0

我在Java代碼中遇到了一些非常奇怪的行爲。我的Eclipse日誌控制檯上顯示的異常顯示Exception:java.lang.NullPointerException,沒有提及它發生的代碼。無法找到空指針源異常

在調試時,我發現了一條線,發生了這種情況,所以把它放在try-catch希望我抓住它。然而它並沒有返回到catch block。

奇怪的部分,即使它執行後立即拋出異常,並且執行正常繼續。

有人可以告訴我可能的原因嗎? 我可以附上源代碼,但我已經檢查了參數,並且都很好。

我這篇文章的主要原因是要了解這樣的行爲,如果你的任何編程人員遇到過。

+1

你也可以清理項目 – ogzd 2013-03-02 12:55:58

+2

我覺得你的編譯代碼與源代碼不同步 – jonasnas 2013-03-02 12:57:09

+0

它出現在哪裏 - 控制檯或錯誤日誌? – 2013-03-02 13:06:17

回答

0

可能是Eclipse的一個問題。我之前已經看到過這種行爲,並且重新啓動Eclipse解決了這個問題。

0

請檢查您的構建器是否已激活,並且已更改的源代碼是否自動構建。否則,您的代碼更改將永遠不會將其導入到運行時應用程

我很確定,執行的源代碼與編輯器中顯示的源代碼不同。

0

如果你看到異常的消息,但沒有堆棧跟蹤,由代碼看起來像這樣造成的:

try 
    { 
    // something which causes the exception 
    } 
catch (final Exception err) 
    { 
    System.out.println(err); 
    } 

這段代碼的問題是,它只是將異常的.toString()方法的結果。對於大多數例外,這只是異常類和消息。該代碼省略了堆棧跟蹤,因此調試問題變得更加困難。

如果異常被抓,然後更改代碼看起來像這樣的堆棧跟蹤包含在輸出:

try 
    { 
    // something which causes the exception 
    } 
catch (final Exception err) 
    { 
    err.printStackTrace(); 
    }