黑马程序员技术交流社区

标题: 为什么报空指针异常? [打印本页]

作者: 朝哥    时间: 2012-8-6 16:54
标题: 为什么报空指针异常?

import java.io.*;

public class MyLineNumberReader extends BufferedReader  {
        private Reader r;
        private int count;
       
        public MyLineNumberReader(Reader r){
                super(r);
        }
       
        public String myReadLine() throws Exception{
                count++;
                return super.readLine();       
        }
       
        public int getLineNumber(){
                return count;
        }
        public void myClose() throws Exception{
                r.close();
        }
}




import java.io.FileReader;

import cn.itcast.text.MyLineNumberReader;

public class Test3 {
        public static void main(String[] args) throws Exception {
                FileReader fr = new FileReader("MyLineNumberReader.java");
                MyLineNumberReader mr = new MyLineNumberReader(fr);
                String line = null;
                while ((line=mr.myReadLine())!=null) {
                        System.out.println(mr.getLineNumber() + ":" + line);
                }
                mr.myClose();
        }

}

运行测试类报空指针异常,为什么?



作者: 王冰    时间: 2012-8-6 17:25
我试了下,将mr.myClose()改成如下就不报空指针异常了
try{
        mr.myClose()
}
catch(Exception e){}

作者: 李知伦    时间: 2012-8-6 20:03
我是这样想的,错了莫怪,嘿嘿
Reader是抽象类,不能实例化
r.close();//用r作为对象对象调用close方法时候,指向为空
所以改成close();或者this.close();

PS.楼上的有点离谱....抓了异常当然就不报了....那不白写了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2