A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuyuecns 中级黑马   /  2014-4-11 22:35  /  1287 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wuyuecns 于 2014-4-12 16:16 编辑

下面这段代码为什么一定要加throws Exception?如果去掉编译无法通过。求高人解答
  1. import java.io.File ;
  2. import java.io.FileReader ;
  3. import java.io.Reader ;
  4. public class InputStreamDemo01{
  5.         public static void main(String args[]) throws Exception{        // 异常抛出,不处理
  6.                
  7.                 // 第1步、使用File类找到一个文件
  8.                 File f= new File("d:" + File.separator + "显卡.txt") ;        // 声明File对象
  9.                
  10.                 // 第2步、通过子类实例化父类对象
  11.                 Reader input = null ;        // 准备好一个输入的对象
  12.                
  13.                 input = new FileReader(f)  ;        // 通过对象多态性,进行实例化
  14.                
  15.                 // 第3步、进行读操作
  16.                 char c[] = new char[2048] ;                // 所有的内容都读到此数组之中
  17.                 //int len=input.read(c);
  18.                
  19.                
  20.                 input.read(c) ;                // 读取内容
  21.                
  22.                 // 第4步、关闭输出流
  23.                 input.close() ;                                                // 关闭输出流
  24.                
  25.                 System.out.println("内容为:" + new String(c)) ;        // 把byte数组变为字符串输出
  26.         }
  27. }
复制代码

5 个回复

倒序浏览
input = new FileReader(f)  ; 如果f代表的文件名称为空的话则读不到目录会报异常。

点评

明白了,谢谢!  发表于 2014-4-12 10:39
回复 使用道具 举报
File f= new File("d:" + File.separator + "显卡.txt") ;        // 声明File对象
               
                // 第2步、通过子类实例化父类对象
                Reader input = null ;        // 准备好一个输入的对象
               
                input = new FileReader(f)  ;  
这几条语句中,如果f创建失败或者为空,下面的语句就不会执行,就回报找不到文件异常
你需要明确的是,只要使用IO流中的类,就需要添加抛出异常,这是IO流的一个特点,记住就好
回复 使用道具 举报
向日葵的曙光 发表于 2014-4-12 08:42
File f= new File("d:" + File.separator + "显卡.txt") ;        // 声明File对象
               
      ...

谢谢!明白了
回复 使用道具 举报
如果找不到要读的文件,就会抛出FileNotFoundException吧,,而且这个不是RuntimeException的子类异常,所以必须声明异常啊。。。否则你就只能在代码中try,,catch了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马