class Student{
private int rollNo;
private String name;
private static Student[] arrStudent;
public void setrollNo(int rollNo){
this.rollNo = rollNo;
}
public void setName(String name){
this.name = name;
}
public int getrollNo() {
return rollNo;
}
public String getName() {
return name;
}
public static void main(String args[]){
//Student[] arrStudent = new Student[2];
arrStudent = new Student[2];
try{
arrStudent[0].setrollNo(1001);
//arrStudent[1].setrollNo(1002);
}
catch(NullPointerException e1) {
System.out.println("#1Dealt it already!");
}
finally{
try{
System.out.println(arrStudent[0].getrollNo());
}
catch(NullPointerException e2) {
System.out.println("#2Dealt it already!");
}
}
}
}

解决方案 »

  1.   

    你还没有给arrStudent赋值呢,当然会有空指针异常了。
    这样修改:
    arrStudent = new Student[2];
    arrStudent[0] = new Student();
    arrStudent[1] = new Student();
      

  2.   

    catch(NullPointerException e2)因为你只是捕获了NullPointerException异常,出现其他异常仍然是会出现的try{
    System.out.println(arrStudent[0].getrollNo());
    }
    catch(NullPointerException e2) {
    system.out.println("#2Dealt it already!");
    }
    catch(Exception ex) {
    system.out.println(ex.toString)    //Exception是所有异常的父类,这样就可以捕获所有异常
    }多重Catch,如果出现指定的"NullPointerException"就会执行属于它catch段,其他异常则会进入后面的catch段