默认构造函数无法处理隐式超级构造函数引发的异常类型ioexception

时间:2018-10-15 17:12:46

标签: java java-io

我已经在寻找类似的方法,但是我找不到答案,因为这些职位大约3或4岁,并且由于我的声誉低下而无法向那里的人提问。

`

File file1 = new File("file1.txt");

File file2 = new File("file2.txt");

boolean isTwoEqual = FileUtils.contentEquals(file1,file2);

{ 

if (isTwoEqual == true)

System.out.println("You have no new grades");

else 
     System.out.println("You have new grade.");

}`

所以我需要检查两个.txt文件是否相等。 我收到一条错误消息:“默认构造函数无法处理隐式超级构造函数引发的异常类型ioexception” 任何想法如何解决这一问题?

1 个答案:

答案 0 :(得分:1)

该错误表示您正在进行此操作:

public class SomeParentClass {
    public SomeParentClass() throws IOException {
        // This is a parent class; maybe you wrote it, maybe you're using one.
        // note: It declares that it throws IOException!
    }
}

您正在写:

public class MyClass extends SomeParentClass {}

问题如下:您编写的任何类都必须至少具有一个构造函数。请注意,“ MyClass”具有零个定义的构造函数;当您这样做并尝试编译该文件时,javac会为您创建一个。 Javac是非常可预测的。它总是使该构造函数:

public MyClass() {
    super();
}

在这里也是。不幸的是,这是一个问题:super()调用会引发IOException,因此您需要处理该异常。解决此问题的最简单方法是编写自己的实际构造函数。不要依靠javac为您服务。因此,添加以下内容:

public MyClass() throws IOException {
    super();
}

,编译器错误将消失。