當我想下面的語句,我可以找到NullPointerException來自哪裏嗎?
a.do(b.do());
假設我是從該行一個NullPointerException。
那麼,有沒有什麼辦法可以找到a是否爲null的空值?
當我想下面的語句,我可以找到NullPointerException來自哪裏嗎?
a.do(b.do());
假設我是從該行一個NullPointerException。
那麼,有沒有什麼辦法可以找到a是否爲null的空值?
沒有,唯一的解決辦法是提取內表達:
Object o = b.do()
a.do(o);
這是一個好主意,反正。
+1如果清晰度是個問題,請展開並簡化您的代碼。 –
如果您在eclispe或任何標準IDE中調試程序,您可以執行Step Into
,它將首先執行b.do()
。如果它崩潰你的問題是與b
對象。如果不是Step Out
從b.do()
和Step Into
a.do()
並在那裏找到你的問題。
我必須說,雖然托馬斯的方法更安全,並建議使用,因爲它也是可讀的。
+1在任何IDE中的調試器中,在嘗試進入該行以查看哪個是null值之前,應該能夠看到'a'和'b'的值。 –
對於該語句,a或b爲空以導致錯誤。除了單獨檢查每個對象之外,您無法看到其中的哪一個。
另外,是不是「做」保留的關鍵字?不確定。
是的,是..... –
簡單的解決方案是顯式檢查必須在此語句之前對a和b進行檢查 – Maddy
a.do(b.do!= null?b.do:new b()。do)。 – htulsiani