Java 在这种情况下如何处理NullpointerException
这是servlet中的for循环函数 我有个问题。 数据将从用户界面传递到此 在某些条件下,某些信息(例如符号或边)可能无法传递,然后在这些条件下,我将获得NullPointreException,因为会向其提供nullJava 在这种情况下如何处理NullpointerException,java,Java,这是servlet中的for循环函数 我有个问题。 数据将从用户界面传递到此 在某些条件下,某些信息(例如符号或边)可能无法传递,然后在这些条件下,我将获得NullPointreException,因为会向其提供null List<Bag> bags = new ArrayList<Bag>(bagdata.length); for (FormBeanData ld : data) { Bag bag = new Bag(); bag.symbol =
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 );
}
List bags=new ArrayList(bagdata.length);
用于(FormBeanda ld:数据){
袋子=新袋子();
bag.symbol=ld.getSymbol();
bag.side=ld.getSide();
袋子。添加(袋子);
}
我们有没有办法处理这种情况
谢谢。只需检查是否有任何值等于null
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);
}
}
您提交的代码很可能甚至没有编译:
bags.add(Bag)
没有意义。您需要添加bag
对象(实例),而不是bag
(类)
在任何情况下,如果要检查引用是否为空,只需检查它:
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) {
}
}
这不是他可能有异常的地方:如果
ld.getSymbol()
为null
则bag.symbol=ld.getSymbol
不会生成异常。它将只分配null
。很可能数据
为空,但提交的代码版本不正确(请参见add(Bag)),因此很难看到异常发生的位置。如果数据为null,代码也会崩溃。正如@Matteo建议的那样,如果这些对象为null,您可能需要设置一些默认值。如果您可以发布正在执行的代码和实际错误(发生在哪里),这将非常有用。