class Student{
private int rollNo;
private String name;
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];
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!");
}
}
}
}
e1,e2我做了处理,但我还是不明白为什么会有异常出现.

解决方案 »

  1.   

    public static void main(String args[]){
    Student[] arrStudent = new Student[2];
    arrStudent[0] = new Student();
    arrStudent[1] = new Student();因为你只是定义了它,没有给它赋值。也就是说你只是申明了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段
      

  3.   

    一楼说的对,楼主只是定义了数组,但对每个元素没有赋值,默认是null,自然会抛空指针