-1

我有以下异常:

Exception in thread "main" java.lang.NullPointerException
    at Studentlist.Studentlist(Studentlist.java:79)
    at Studentlist.main(Studentlist.java:38)

在第 38 行:我将输入传递给getstudentsprofile。

在第 79 行:我在做:

int z= array1.length;

如何调试此问题。我正在阅读大量记录以及它在一个地方崩溃的所有内容,但有这个例外。如何调试这个?我怎样才能看到异常发生的时间是什么值?

事实上我有:

catch (IOException ee)
        {
            ee.printStackTrace();
        }      

但没有运气。

4

8 回答 8

4

似乎array1nullNullPointerException不是,IOException所以你需要抓住

catch (NullPointerException npe) {
            npe.printStackTrace();
}

甚至最好不要让您的代码为该语句引发此条件,检查 null

int z = SOME_DEFAULT_VALUE;
if(arr!=null){
 z = arr.length;
}
于 2012-08-30T06:00:06.823 回答
3

您不应该捕获 NullPointer 异常,因为它是 RunTimeException,这通常是由于您的代码中的问题在编译时没有被捕获。请查看这些讨论以获取更多详细信息。

捕获空指针异常是代码异味吗?

如果捕获空指针异常不是一个好习惯,那么捕获异常是一个好习惯吗?

于 2012-08-30T06:06:47.180 回答
2

只需用try/catch...处理即可。无需使用if条件...

try{

     int z= array1.length;

 }catch(final IOException|NullPointerException ex){    

          // This Nested catch works with Java 7 and above

 }
于 2012-08-30T06:29:48.447 回答
2

检查array1是否为空

if(array1 ! = null) { // you should always avoid NPEs

  int z= array1.length;
}

或者

catch (IOException | NullPointerException e) // you can multi-catch exceptions, java7 new feature
   e.printStackTrace();
}    

NullPointerException 和 IOException 是不同的。按照 java 教程学习 Exceptions

于 2012-08-30T06:00:43.190 回答
2

第 79 行的 array1 为空,但您不应捕获NullPointerException它,因为它很可能表明您的程序中存在错误。相反,您应该检查引用是否是!= null(如果 null 是程序中的有效值),或者如果不是,则通过例如抛出一个InvalidArgumentException.

if(array1 ! = null) { //if array1 being null is a valid value in a program
    int z= array1.length;
}
//continue with your processing

或者

if(array1 ! = null) { //if array1 being null is not a valid value in a program
    throw new IllegalArgumentException("You should pass a not null array for processing");
}
于 2012-08-30T06:07:13.670 回答
1

array1 未初始化,这就是您得到 NullPointerException 的原因。

显然, anIOException 不是NullPointerException它不进入 catch 块的原因。

要调试 java 程序,请使用具有内置调试功能的 IDE。您会发现 Netbeans 非常易于使用。其他像 Eclipse 和 JDeveloper 也有很好的特性。

于 2012-08-30T06:05:43.100 回答
1

NullPointerException发生是因为你没有初始化array1 ,这意味着array1它没有指向任何内存位置。你必须像初始化 array1 int[] arrray1 = new int[size];

于 2012-08-30T06:11:12.590 回答
1

嘿,不要抓住 NullPointerException,这不是一个好习惯。相反,尝试解决问题。提供运行时异常以修复编程错误。在您的情况下, array1 是 NULL ,因为它没有被初始化。这样做,它应该工作。

于 2012-08-30T06:31:46.530 回答