2011-11-04 79 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