黑马程序员技术交流社区

标题: 关于抛出异常 [打印本页]

作者: wuyuecns    时间: 2014-4-11 22:35
标题: 关于抛出异常
本帖最后由 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. }
复制代码

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

谢谢!明白了
作者: 李程    时间: 2014-4-12 13:06
如果找不到要读的文件,就会抛出FileNotFoundException吧,,而且这个不是RuntimeException的子类异常,所以必须声明异常啊。。。否则你就只能在代码中try,,catch了




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