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;