Ошибка Java: незарегистрированное исключение ioexception должно быть перехвачено или объявлено для выдачи

Я не могу найти, что не так с моим кодом, вот он

public class Library{

FileReader fr = new FileReader("D:\\Users\\Adi\\Documents\\NetBeansProjects\\Hw 7Jan-13Jan\\Date.txt");
BufferedReader br = new BufferedReader(fr);

public void add(Publication p){
    if(counter < publication.length){
        publication[counter++]=p;        
    }
}

public boolean remove(int id){
    Publication p=null;

    for(int i=0;i<counter;i++)
        if(publication[i].getId()==id){
            p=publication[i];

            for(int j=0;j<counter-1;j++)
                publication[j]=publication[j+1];
                publication[counter-1]=null;
                counter--;
        return true;        
        }

            return false;}

}

Я пробовал с try{} catch{}, но потом получил другую ошибку: class,interface or enum expected

Любая помощь приветствуется! Спасибо

PS: я новичок в этом IOException и пытаюсь {} поймать {} :)


person Adi Purcaru    schedule 10.01.2016    source источник
comment
Посмотрите на используемый вами конструктор FileReader — он объявляет, что может генерировать IOException. Как вы ожидаете, что это будет распространяться? Насколько хорошо вы разбираетесь в проверенных исключениях на данный момент? (Не очень понятно, почему у вас есть эти поля fr и br, учитывая, что вы больше нигде их не используете, заметьте...)   -  person Jon Skeet    schedule 10.01.2016
comment
Какой-то метод вашего кода выдает проверенное исключение IOException. Это исключение должно быть передано вызывающему с помощью throws IOException в заголовке метода или перехвачено с помощью try and catch. Вам нужно явно поймать исключение IOException, подобное этому try { ... } catch(IOException e) { ... }   -  person ssc-hrep3    schedule 10.01.2016
comment
Вы обернули экземпляры FileReader и BufferedReader в блок try-catch?   -  person Ikechukwu Kalu    schedule 10.01.2016
comment
да, я попытался поставить public class Library throws IOException, а затем я получил ожидаемый класс, интерфейс или перечисление..   -  person Adi Purcaru    schedule 10.01.2016
comment
я собираюсь использовать br позже, но теперь я застрял с этими ошибками   -  person Adi Purcaru    schedule 10.01.2016
comment
Вы не можете определить генерацию исключений в определении класса. вы можете использовать его только с методами.   -  person Abdul Razak    schedule 10.01.2016


Ответы (1)


Возможно, проблема в том, что вы определили FileReader fr как переменную класса. Затем вы получите сообщение об ошибке для обработки/определения исключения. когда вы определяете try-catch для обработки исключения, возникает другая проблема, т.е. "Недопустимое начало типа". Для этого вам нужно определить/объявить:

static{
    try {
        FileReader fr = new FileReader("D:\\Users\\Adi\\Documents\\NetBeansProjects\\Hw 7Jan-13Jan\\Date.txt");
    } catch (Exception e) {
    }
}

или назначьте FileReader в конструкторе.

FileReader fr;

public Library(){
     try {
        fr = new FileReader("D:\\Users\\Adi\\Documents\\NetBeansProjects\\Hw 7Jan-13Jan\\Date.txt");
    } catch (Exception e) {
    }
     BufferedReader br = new BufferedReader(fr);
}
person Abdul Razak    schedule 10.01.2016