2012-10-21 53 views
1
 Product p = dao.checkProduct(pnumber); 
    ExpensiveProduct ep = dao.checkexpensiveProduct(pnumber); 
    if ((p.getNumber() == null)&&(ep.getNumber()==null)){ // java.lang.NullPointerException 
    //do something 

    }else{ 
    //do something 

     } 

爲什麼這種說法給人java.lang.NullPointerException 我有任何其他的方法來檢查呢?空指針異常的情況如果

+2

確保'p'和'ep'是在調用'getNumber()'之前非空。 – Vulcan

+1

完整的錯誤? +更多的代碼... – KeirDavis

回答

1

NullPointerException s(NPEs)在您調用方法或訪問null對象的屬性時發生。

要檢查null s,您可以在嘗試使用它們之前打印變量的值,或者使用調試程序遍歷程序,並檢查到達異常發生的行時變量的值是什麼。

編輯:
關於你的評論

我需要檢查p.getNumber()和ep.getNumber()都對這種說法

現有的代碼返回null並得到TURE

if ((p.getNumber() == null)&&(ep.getNumber()==null)) 

已經這樣做了。由於您在該線路上獲得NPE,因此p本身是nullepnull或兩者。您應該檢查您的checkProduct()checkexpensiveProduct()方法,其中設置了pep以查看它們是否正常工作。

+0

我需要檢查這個空值,並在該聲明中得到真實我可以&&這些2? –

+0

我不明白你的評論。你能改說嗎? – Pops

+0

我需要檢查p.getNumber()和ep.getNumber()都返回null並獲得該語句 –

3

唯一非平凡可能性,其中該代碼可以拋出NPE是pnumberInteger其中checkProduct()checkexpensiveProduct()預計int(或類似)。

其他微不足道的原因是daopnull(容易檢查)。

+0

我需要檢查空位並在該聲明中變爲真我可以&&這兩個? –

2

試試這樣說:

if ((p != null) && (p.getNumber() == null) && (ep != null) && (ep.getNumber()==null)){ 
+0

這總是假我需要做別的部分還有任何想法做到這一點? –

+0

如果它總是錯誤的,我想你有你的答案。修復p和ep。 – duffymo

0

什麼線給NullPointerException?確保pep不爲空。

+0

我需要檢查那些返回null,並獲得ture並做其他部分。 –

+0

如果其中一個對象爲null,則不能像您在代碼中那樣使用他的方法。檢查方法'dao.checkProduct()'和'dao.checkexpensiveProduct()'以確保它們不會返回空對象。相反,他們可以返回沒有任何屬性的instatiated對象。 –

+0

所以你說如果兩者都返回null它的gonabe NullPointerException? –

1

檢查他們的你的變量p和EP變量。一是null.check 爲什麼

dao.checkProduct(pnumber) 

dao.checkexpensiveProduct(pnumber);被返回null