(MyEclipse 10, java)
在调试程序时,报错:
java.lang.NullPointerException
at com.fsti.becp.contract.action.CertificateAction.certificateBorList(CertificateAction.java:508)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
错误信息的头两行,可以很清晰的看到,是在CerticatrAction文件的第508行,certificateBorlist方法中出来问题。以下是报错的语句:
List<TCertificate> itemList = null;
try{
for(int i=0; i<borrowlist.length; i++) {
Long certificateId = new Long(borrowlist[i]);
TCertificate item = (TCertificate)certificateService.findById(TCertificate.class, certificateId);
itemList.add(item);
}
} catch(Exception e) {e.printStackTrace();}
看标红的部分,即程序段的第一行,可以看出,之所以报空指针的错误,是因为没有对
List<TCertificate> itemList
进行正确的实例化,所以,在后面想要往里面add内容是发生错误。
在这里,将这一句改为:
List<TCertificate> itemList = new ArrayList<TCertificate>();
就能解决这个问题。
是一个低级错误。记录引以为戒。
此外,写 try{}catch(){} 确实是必要的,即使预先无法预测是哪一类错误,无法再catch中提出解决方案,对于标定错误也很有帮助。