2017-01-24 17 views
0

造成NPE我有了一套呼籲其方法的對象,如:查找其方法是在Eclipse

objectName.method1().method2().method3(); 

,我想知道這些方法之一是導致NullPointerException異常被拋出。有沒有辦法在Eclipse調試器中做到這一點?

+0

您正在調用method2()對method1()返回的內容,對method3()也是如此。除非這些測試真的得到很好的測試,並且使用類似idk本身的類,否則我會按照答案中的建議。你有3個不同的對象和3種不同的方法。堆棧跟蹤混亂 – efekctive

+0

每個「。」和「[」都是空指針異常的潛在原因。爲了避免出現這種情況,最多隻需一行。 –

+1

我無法想象讀取堆棧跟蹤會非常困難。 – ChiefTwoPencils

回答

2

如果你想知道哪些特定的值是意外null(例如objectName或返回值從method1()method2()),那麼我建議拆分此邏輯分爲多行。然後,您將能夠在調試器中設置特定的斷點,並進入準確的失敗代碼行。

這在運行時也有好處。如果它發生在部署後或在實時客戶環境中,那麼您將在堆棧跟蹤中得到一個更具體的行號,指向具有該問題的確切代碼行。

0

這可以通過在Eclipse調試器中仔細步進來完成。在你描述的線上放一個斷點。如果在字節碼中有局部變量,那麼通過查看objectName的值,您將立即知道第一個調用會導致問題。如果它爲空,則知道它是第一個呼叫。

如果不是,則進入方法(F5)。這會帶給你第一種方法的實現。然後您可以立即退出(步驟返回 - F7)。您應該回到調試器的原始線路,準備好逐步完成下一個方法。你繼續進入(F5)。這應該帶你去實現下一個方法。如果你到達那裏,那麼仍然沒有例外。再次返回(F7)。

繼續執行,直到找到某個異常處理程序,而不是您想要介入的方法。這是你之後或者之前的那個,因爲那個返回null。

您也可以使用「Run to line」功能(默認的Ctrl + R)來更輕鬆地進行操作。