2012-08-30 186 views
-1

我有以下异常:Java的异常处理NullPointerException异常

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

在线38: 我传递输入到getstudentsprofile。

上line79: 我做:

int z= array1.length; 

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

逸岸,我有:

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

,但没有运气。

+1

我认为你的array1为空。 –

回答

4

好像array1nullNullPointerException不是IOException所以你需要赶上

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

,甚至最好不要让你的代码,以提高这种情况的发言,检查空

int z = SOME_DEFAULT_VALUE; 
if(arr!=null){ 
z = arr.length; 
} 
+3

他不应该抓住这个例外。他应该修复它 – Robin

+0

不应该捕捉运行时异常。你最终用你的代码掩盖了这个问题。 –

2

检查是否数组1为空

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异常是不同的。按照教程Exceptions

1

array1未初始化,这就是为什么你会得到NullPointerException。

显然,一个IOException不是 a NullPointerException这就是为什么它不进入catch块。

要调试Java程序,请使用内置调试功能的IDE。你会发现非常容易使用Netbeans。其他像Eclipse和JDeveloper也有不错的功能。

2

阵列1在行79为空,但你不应该赶上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"); 
} 
1

NullPointerException发生是因为你没有初始化array1这意味着array1不指向任何内存location.You必须初始化数组1像 int[] arrray1 = new int[size];

2

只是处理它与try/catch .... 需要使用if条件...

try{ 

    int z= array1.length; 

}catch(final IOException|NullPointerException ex){  

      // This Nested catch works with Java 7 and above 

} 
1

嘿,不要捕捉NullPointerException,这不是一个好的做法。相反,试着解决这个问题。给出运行时异常以修复编程错误。在你的情况下,array1是NULL,因为它没有被初始化。这样做,它应该工作。