Java 在构造默认构造函数时,无法处理由隐式超级构造函数引发的异常:类型异常
在我尝试将代码转换为可构造类之前,代码工作正常。当我试图从它构造一个对象时,我得到了错误 “默认构造函数无法处理隐式超级构造函数引发的异常类型IOException。必须定义显式构造函数” 这是在必须向Java 在构造默认构造函数时,无法处理由隐式超级构造函数引发的异常:类型异常,java,exception,Java,Exception,在我尝试将代码转换为可构造类之前,代码工作正常。当我试图从它构造一个对象时,我得到了错误 “默认构造函数无法处理隐式超级构造函数引发的异常类型IOException。必须定义显式构造函数” 这是在必须向FileReader和BufferedReader抛出异常时发生的 谢谢 编辑: FileReader textFilethree = new FileReader (xFile); BufferedReader bufferedTextthree = new BufferedReader (te
FileReader
和BufferedReader
抛出异常时发生的
谢谢
编辑:
FileReader textFilethree = new FileReader (xFile);
BufferedReader bufferedTextthree = new BufferedReader (textFilethree) ;
String lineThree = bufferedTextthree.readLine();
xFile是从构造中获取的。请注意,在此构造中会引发异常。默认构造函数隐式调用超级构造函数,假定超级构造函数会引发某些异常,您需要在子类的构造函数中处理这些异常。有关详细答案,请张贴代码
class Base{
public Base() throw SomeException{
//some code
}
}
class Child extends Base{
public Child(){
//here it implicitly invokes `Base()`, So handle it here
}
}
基类super.constructor由扩展类构造函数隐式调用:
class Base
{
public Base () throws Exception
{
throw <>;
}
}
class Derived extends Base
{
public Derived ()
{
}
}
无论您使用什么方法new
创建Derived
的对象,都可以将其包含在try catch
中,或者使该方法如上所述引发异常。
[注意:这是伪代码]任何扩展其默认构造函数处理某些异常的超类的子类,子类必须具有实现该异常的默认构造函数
超级班{
public Super()引发异常{}
类Sub扩展Super{public Sub()抛出异常{/}只要将对构造函数的调用包含在Try Catch中即可。如果您有类似的内容
class example{
public void fileReader(String path) throws Exception{
//some code that throws Exception
}
}
确保在尝试创建对象的方法上使用相同的轴
class implementation{
public void someMethod() throws Exception{
example object = new example();
example.filereader("C:\\....");
}
}
在使用apache poi时发生在我身上你需要添加相关的构造函数,因为FileReader的参数只是构造函数的一个参数,抛出了异常。所以你需要捕获或抛出它到子类的构造函数中我确实抛出了它,但是当我尝试构造时,我在IDE中得到了错误消息。同样,在构造时需要处理它。我想忘记ide错误会出错,我运行了它,结果很好。如果我这样做,我以后会遇到问题吗?
class implementation{
public void someMethod() throws Exception{
example object = new example();
example.filereader("C:\\....");
}
}