// Paying attention to exceptions
// in constructors.
import java.io.*;class InputFile {
  private BufferedReader in;
  InputFile(String fname) throws Exception{
把throws Exception 不要了就有两个错误

解决方案 »

  1.   

    InputFile(String fname) 必须扑获异常
    throw Exceptions 可以;
     try catch也可以
      

  2.   

    这就是Java的一个优点啊,你必须在可能在运行时出现问题的地方,预先处理
      

  3.   

    你在函数中有异常抛出,却这个不让函数抛出异常,java当然不愿意啊。
      

  4.   

    问题出在这个地方:
    catch(FileNotFoundException e) {
          System.err.println(
            "Could not open " + fname);
          // Wasn't open, so don't close it
         throw e;的最后一行,你又在此处抛出了异常,如果你将函数声明出的 throws Exception去了,那么这里的 throw e 就会出错。不过说实话,以上的代码不敢恭维。
      

  5.   

    以上的代码是从编程思想里面来的,但是请问为什么声明出的 throws Exception 去了那么这里的 throw e 就会出错。能说清楚点吗,
      

  6.   

    ant_bug()不能这样啊,哈哈哈。
    Java的异常处理是这样的,要么你将它catch掉做你想做的事情【譬如你的代码是将错误信息打印出来了】,要么就是你往上层抛由调用你方法的人或方法来处理异常你抛出的异常,不论是上述的任何一种方法最终异常都是要catch到的区别就在于catch到异常后是由你方法本身处理还是由调用你方法的上层来处理。
      

  7.   

    kao
    throws Exception 是函数声明,说明这个函数是要抛出异常的
    throw e 是你抛的异常
    难道要编译器去看有没有throw e 然后判断这个函数有没有抛出异常?
    Java又不是你发明的,你发明的你怎么弄都成
    不是你发明的,你只记住一条: Java就是要这么弄的,就成了
      

  8.   

    异常是java虚拟机检测到你的程序可能公出现那样的错误,并不是一定会出现。从软件纯理论的角度来讲,我们是要杜绝一切可能出错的地方。所以在java中可能出现的异常都要捕获的。