黑马程序员技术交流社区

标题: Read操作时,该做的异常都处理了,怎么还让处理啊? [打印本页]

作者: dark_horse_xu    时间: 2014-10-18 21:52
标题: Read操作时,该做的异常都处理了,怎么还让处理啊?
import java.io.*;
class FileReaderTest
{
        public static void main(String[] args)
        {
                //System.out.println("Hello World!");
                FileReader fr = null;
                try
                {
                        fr = new FileReader("DateDemo.java");
                        char[] buf = new char[1024];
                        int num = 0;
                        while ((num = fr.read(buf))!= -1)                      {
                                System.out.println(new String(buf,0,num));
                        }
                }
                catch (FileNotFoundException e)
                {
                        System.out.println(e.toString());
                }
                finally
                {
                        try
                        {
                                if(fr != null)
                                fr.close();
                        }
                        catch (FileNotFoundException e)
                        {
                                System.out.println(e.toString());
                        }
                }
        }
}错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出,不是已经try和catch了吗?怎么还提示错误呢?
还应该在哪里生命呢??

作者: ⋛⋌⋚JEEP    时间: 2014-10-18 22:15
看提示做呀,说的是要么抛IO异常要么try,你处理的时候,用的异常是FileNotFoundException文件找不到异常,那是你读取文件可能存在的隐患,凡是跟流打交道的数据,你尽量抛大的异常,这里抛IO异常,或者catch的时候用IOException:)
作者: dark_horse_xu    时间: 2014-10-23 21:18
⋛⋌⋚JEEP 发表于 2014-10-18 22:15
看提示做呀,说的是要么抛IO异常要么try,你处理的时候,用的异常是FileNotFoundException文件找不到异常, ...

就是说,还可能出现这个异常以外的异常,但是不属于这个类或其子类(如果有子类的话)。
作者: ⋛⋌⋚JEEP    时间: 2014-10-24 07:49
如果你是一条条处理的话,那么
  1.    fr = new FileReader("DateDemo.java");//关联的文件可能找不到,需要处理FileNotFoundException异常
  2. //如果没有读到数据,那么read方法就会让程序一直阻塞,停下来,这个时候需要处理IOException
  3. char[] buf = new char[1024];
  4.                          int num = 0;
  5.                          while ((num = fr.read(buf))!= -1)                      {
  6.                                  System.out.println(new String(buf,0,num));
  7.                          }
  8. 总之,你需要考虑的异常,在IO流里面,你需要查看一下API,如果不是很了解的可能发生的异常。如果是一起处理,一般抛大的异常或者catch大的异常,也就是多个异常的最高级,可以理解成异常的父类,这里还可以用最高级处理,比如Exception
复制代码

作者: dark_horse_xu    时间: 2014-10-25 02:00
⋛⋌⋚JEEP 发表于 2014-10-24 07:49
如果你是一条条处理的话,那么

谢谢,你的回答
作者: chen578157939    时间: 2014-10-26 12:57
fr.close 我觉得不应该是 catch(FileNotFoundException) 应该是空指针异常才对




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