代码工作正常,直到我尝试将代码转换为可构造的类。当我尝试从中构造一个对象时,我得到了错误
“默认构造函数无法处理由隐式超级构造函数抛出的异常类型IOException。必须定义显式构造函数”
这是必须向FileReader
和BufferedReader
抛出异常的时候。
由于
编辑:
FileReader textFilethree = new FileReader (xFile);
BufferedReader bufferedTextthree = new BufferedReader (textFilethree) ;
String lineThree = bufferedTextthree.readLine();
xFile是从构造中获得的。请注意,在此构造中会抛出异常。
答案 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 时发生在我身上