2011-11-04 153 views
0

這是我在servlet中的for循環函數如何在這種情況下處理NullpointerException

這裏我有一個問題。 數據將從用戶界面傳遞給此。

在某些情況下,某些信息(例如符號或邊)可能無法傳遞,那麼在這些情況下,我將獲得NullPointreException,因爲將向它提供NullPointreException。

List<Bag> bags = new ArrayList<Bag>(bagdata.length); 

for (FormBeanData ld : data) { 
    Bag bag = new Bag(); 
    bag.symbol = ld.getSymbol(); 
    bag.side = ld.getSide(); 
    bags.add(bag); 
} 

是否有反正我們可以處理這種情況?

謝謝。

+1

作爲@Matteo建議波紋管前檢查,你可能希望如果這些對象爲空,則放置一些默認值。 – hovanessyan

+1

如果你可以發佈你正在執行的代碼和實際的錯誤(它發生在哪裏),它會很有用。 – Matteo

回答

2

您提交最有可能甚至不編譯代碼:bags.add(Bag)沒有意義。您需要添加bag對象(實例),而不是Bag(該類)。

在任何情況下,如果你想檢查一提的是null只是檢查:

if (myobject != null) { 
    myobject.myfield = ... // myobject is not null 
} else { 
    // ignore, print an error, do what is required to do 
} 

您還可以遍歷

if (collection != null) { 
    for (Object o : collection) { 
    } 
} 
-1

只是檢查,如果任何值等於空

List bags = new ArrayList(bagdata.length); 
for (FormBeanData ld : data) { 
    if(ld!=null && ld.getSymbol()!=null && ld.getSide()!=null) { 
     Bag bag = new Bag(); 
     bag.symbol = ld.getSymbol(); 
     bag.side = ld.getSide(); 
     bags.add(Bag); 
    } 
} 
+0

這不是他可能有例外的地方:如果'ld.getSymbol()'爲'null',那麼'bag.symbol = ld.getSymbol'將**不會產生異常。它只會分配'null'。最有可能'數據'爲空,但Revathi提交的代碼不可能是正確的(請參閱add(Bag)),因此很難看到發生異常的位置。如果數據爲空,您的代碼也會崩潰。 – Matteo