NullPointerException的Java异常处理
我有以下例外情况:NullPointerException的Java异常处理,java,Java,我有以下例外情况: Exception in thread "main" java.lang.NullPointerException at Studentlist.Studentlist(Studentlist.java:79) at Studentlist.main(Studentlist.java:38) int z= array1.length; 第38行: 我正在将输入传递到getstudentsprofile int z= array1.length; 第79行
Exception in thread "main" java.lang.NullPointerException
at Studentlist.Studentlist(Studentlist.java:79)
at Studentlist.main(Studentlist.java:38)
int z= array1.length;
第38行:
我正在将输入传递到getstudentsprofile
int z= array1.length;
第79行:
我正在做:
int z= array1.length;
如何调试此问题。
我读了很多唱片,所有的东西都在一个地方崩溃,只有这个例外。
如何调试这个?如何查看异常发生的时间?值是什么
int z= array1.length;
事实上,我有:
int z= array1.length;
catch (IOException ee)
{
ee.printStackTrace();
}
但是运气不好。似乎
array1
是null
并且NullPointerException
不是IOException
,因此您需要捕获
int z= array1.length;
catch (NullPointerException npe) {
npe.printStackTrace();
}
或者更好的是,不要让代码为该语句提出这个条件,检查null
int z= array1.length;
int z = SOME_DEFAULT_VALUE;
if(arr!=null){
z = arr.length;
}
检查数组1是否为空
int z= array1.length;
if(array1 ! = null) { // you should always avoid NPEs
int z= array1.length;
}
或
int z= array1.length;
NullPointerException和IOException是不同的。遵循java教程。数组1没有初始化,这就是为什么会出现NullPointerException
int z= array1.length;
显然,IOException
不是NullPointerException
,这就是它不进入catch块的原因
int z= array1.length;
要调试java程序,请使用具有内置调试功能的IDE。您会发现使用Netbeans非常容易。其他的Eclipse和JDeveloper也有很好的特性。您不应该捕获NullPointer异常,因为它是一个运行时异常,这通常是由于代码中的问题在编译时没有捕获到。请查看这些讨论以了解更多详细信息
int z= array1.length;
int z= array1.length;
第79行的数组1为空,但您不应捕获
NullPointerException
,因为它很可能表示程序中存在错误。相反,您应该检查引用是否为!=null
(如果null在程序中是有效值),或者,如果不是,则通过抛出InvalidArgumentException
等方式向调用方代码发出信号,表明它提供了无效值
int z= array1.length;
if(array1 ! = null) { //if array1 being null is a valid value in a program
int z= array1.length;
}
//continue with your processing
或
int z= array1.length;
发生
是因为您没有初始化array1
,这意味着array1
没有指向任何内存位置。您必须像这样初始化array1
int[]arrray1=新的int[size]
只要用try/catch
处理它就行了否需要使用如果
条件
int z= array1.length;
try{
int z= array1.length;
}catch(final IOException|NullPointerException ex){
// This Nested catch works with Java 7 and above
}
嘿,不要捕捉NullPointerException,这不是一个好的实践。相反,尝试解决问题。运行时异常用于修复编程错误。在您的例子中,array1为NULL,因为它尚未初始化。这样做应该会起作用。他不应该抓住那个例外。他应该只是修复它,而不应该捕获运行时异常。你最终用你的代码掩盖了这个问题。
int z= array1.length;