黑马程序员技术交流社区

标题: 为什么这段代码可以不抛出FileNotFoundException? [打印本页]

作者: 刘晓康    时间: 2012-3-30 13:46
标题: 为什么这段代码可以不抛出FileNotFoundException?
try {
      BufferedReader br =
                  new BufferedReader(new FileReader(“d:/aa.txt”));
      String s = null;
      while((s=br.readLine())!=null){
        fs.println(s);            
      }
      br.close();
    } catch (IOException e) {
      fs.println("无法读取文件");
    }
作者: 何万县    时间: 2012-3-30 13:49
本帖最后由 何万县 于 2012-3-30 19:56 编辑

因为try是试着执行,若有错误,直接执行catch的内容,所以不需要异常处理
FileNotFoundException:当试图打开指定路径名表示的文件失败时,抛出此异常。 在不存在具有指定路径名的文件时,此异常将由 FileInputStream、FileOutputStream 和 RandomAccessFile 构造方法抛出。如果该文件存在,但是由于某些原因不可访问,比如试图打开一个只读文件进行写入,则此时这些构造方法仍然会抛出该异常
作者: 王运科    时间: 2012-3-30 18:25
FileNotFoundException:    当试图打开指定路径名表示的文件失败时,抛出此异常。 在不存在具有指定路径名的文件时,此异常将由 FileInputStream、FileOutputStream 和 RandomAccessFile 构造方法抛出。如果该文件存在,但是由于某些原因不可访问,比如试图打开一个只读文件进行写入,则此时这些构造方法仍然会抛出该异常。
IOException的子类:   ChangedCharSetException, CharacterCodingException, CharConversionException, ClosedChannelException, EOFException, FileLockInterruptionException, FileNotFoundException, FilerException, HttpRetryException, IIOException, InterruptedIOException, InvalidPropertiesFormatException, JMXProviderException, JMXServerErrorException, MalformedURLException, ObjectStreamException, ProtocolException, RemoteException, SaslException, SocketException, SSLException, SyncFailedException, UnknownHostException, UnknownServiceException, UnsupportedDataTypeException, UnsupportedEncodingException, UTFDataFormatException, ZipException
   FileNotFoundException是IOException的子类,这里已经抛出IOException,就不用再抛FileNotFoundException了。


作者: 黄秋    时间: 2012-3-30 19:52
本帖最后由 黄秋 于 2012-3-30 19:53 编辑

1. FileNotFoundException 属于 IOException, 或者说IOException里包含 FileNotFoundException 。
2. 你将 IOException 改成同级别的 FilerException,就会抛出 FileNotFoundException ,这说明异常有级别、层次问题,要弄清楚谁是谁子类,谁包含于谁。
作者: 郑涛    时间: 2012-3-30 23:13
FileNotFoundException当试图打开指定路径名表示的文件失败时,抛出此异常。 是三大异常里的检查性异常:程序正确,但因为外在的环境条件不满足引发。程序开发者必须考虑并处理这个问题,Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。而现在用try/catch可以处理,你写的代码中
catch (IOException e) { }  ,FileNotFoundException就是IOException的一个子类。






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