构造默认构造函数时无法处理异常:类型由隐式超级构造函数抛出的异常

时间:2011-07-21 07:33:23

标签: java exception

代码工作正常,直到我尝试将代码转换为可构造的类。当我尝试从中构造一个对象时,我得到了错误

  

“默认构造函数无法处理由隐式超级构造函数抛出的异常类型IOException。必须定义显式构造函数”

这是必须向FileReaderBufferedReader抛出异常的时候。

由于

编辑:

FileReader textFilethree = new FileReader (xFile);
BufferedReader bufferedTextthree = new BufferedReader (textFilethree) ;
String lineThree = bufferedTextthree.readLine();

xFile是从构造中获得的。请注意,在此构造中会抛出异常。

5 个答案:

答案 0 :(得分:6)

默认构造函数隐式调用超级构造函数,该构造函数假定抛出了一些需要在子类的构造函数中处理的异常。详细解答后发布代码

class Base{

  public Base() throw SomeException{
    //some code
  }

}

class Child extends Base{
  public Child(){
   //here it implicitly invokes `Base()`, So handle it here
  }
}

答案 1 :(得分:3)

扩展类构造函数隐式调用基类super.constructor:

class Base
{
  public Base () throws Exception
  {
    throw <>;
  }
}

class Derived extends Base
{
  public Derived ()
  {
  }
}

现在,需要在Derived()中处理异常,或者将构造函数设为,

public Derived() throws Exception
{
}

无论您new Derived对象的try-catch方法是什么,都可以将其括在Exception中,或者让该方法按上述方式抛出{{1}}。 [注意:这是伪代码]

答案 2 :(得分:0)

任何扩展超类的子类,其默认构造函数处理一些异常,子类必须有一个实现异常的默认构造函数

类超级{     public Super()抛出异常{}}

class Sub extends Super {public Sub()throws Exception {//}}

答案 3 :(得分:0)

只需将对构造函数的调用括在Try-Catch中即可。

答案 4 :(得分:0)

如果你有这样的事情

class example{
    public void fileReader(String path) throws Exception{
         //some code that throws Exception
    }
 }

确保在您尝试创建对象的方法上使用相同的 sintaxis

class implementation{
     public void someMethod() throws Exception{
          example object = new example();
          example.filereader("C:\\....");
      }
  }

在使用 apache poi 时发生在我身上