конструктор по умолчанию не может обработать тип исключения ioexception, выданный неявным супер-конструктором - PullRequest
0 голосов
/ 15 октября 2018

Я уже искал подобные шаги, но не могу найти ответ, так как этим сообщениям 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 голосов
/ 15 октября 2018

Эта ошибка означает, что у вас это происходит:

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 создаст его для вас.Джавак очень предсказуем;он всегда делает этот конструктор:

public MyClass() {
    super();
}

И так здесь.К сожалению, это проблема: вызов super() может вызвать IOException, и вам нужно это обработать.Самое простое решение этой проблемы - написать собственный конструктор;не полагайтесь на javac, чтобы сделать это для вас.Итак, добавьте это:

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

и ошибка компилятора исчезнет.

...