2013-06-23 30 views
0

我知道java在運行時不能給我空字段的名稱,但在很多情況下,包含空Object運行時類名的NullPointerException消息可能使跟蹤異常原因變得更容易。或者我錯過了一些東西,這也是不可能的?Java NullPointerException - 我可以告訴null對象的類嗎?

P.S.即使沒有這樣的標準方式,你能想出一個辦法來完成它嗎?

編輯:
爲了澄清 - 我知道我可以(大部分時間)很容易地從代碼行追查來源,但:

  • 在某些情況下,需要更深入的挖掘進入所謂的方法(如果try塊不夠深 - 這是一種糟糕的編碼方式,但有時它是一個給定的事實)。
  • 說一些新的SO人問這樣的異常,然後讓消息可以幫助我們更快地解決他的問題(在任何從日誌中進行調試的情況下都是如此)。
+1

如果你仔細看看你的錯誤日誌,你可以很容易地找到發生異常的確切位置 – stinepike

+1

你可以閱讀stacktrace的錯誤,並且可以找到哪個方法會在哪一行拋出異常,並且肯定可以找到哪個變量是null在那條線 –

+3

StinePike:你得到了這條線,但是那條線可能仍然涉及6個引用,其中每個引用可能是'null'。話雖如此,我從來沒有找到這個問題的罪魁禍首。 – Joey

回答

4

根據定義,null就是這樣;空,沒有階級,沒有對象,什麼都沒有。 所以,不可能告訴你什麼是空的。但是,如果你能看到源代碼行,那麼應該很容易猜到程序試圖訪問的是什麼。

+0

當JVM嘗試引用它時,是否知道空指針的類型?如果不是,它如何知道期望的內存結構?運行時是不是正在讀取虛擬表? – Elist

+0

檢查對象類型是在編譯時完成的。在運行時它不知道。運行時,JVM會期望引用一個對象。查看其他相關問題。 – Ayman

3

所有Java虛擬機中只有一個null,而不是每個類的null。所以這是不可能的。

相關問題