вызов метода, который создает файл из выполненного действия - PullRequest
0 голосов
/ 21 января 2011

Я пытаюсь вызвать метод, который создает файл, однако я вызываю этот метод из выполненного действия, которое просто не может иметь IOException ...

Вот код:

/* ACTION PERFORMED**/
public void actionPerformed(ActionEvent evt){
    Object source = evt.getSource();
    if (source == add)
    {
        String mothername = " ";
        String fathername = " ";
        String motherphone = " ";
        String fatherphone = " ";

        Patient patient = new Patient(...));

        printPatients(patient);

        System.out.println("past printing patient");

        writetoFile(patient); //giving an error
    }

    if (source == uadd)
    {
        Patient patient = new Patient(...));

        printPatients(patient);

        writetoFile(patient); //giving an error
    }
}

//This is the method I am trying to call

public static void writetoFile(Patient p) throws IOException
{
    RandomAccessFile inout = new RandomAccessFile("PatientsInfo.dat", "rw");

    inout.seek(inout.length());
    inout.writeUTF(p.getName());
    inout.writeUTF(p.getAge());
    inout.writeUTF(p.getGender());
    inout.writeUTF(p.getSiblings());
    inout.writeUTF(p.getID());
    inout.writeUTF(p.getNationality());
    inout.writeUTF(p.getCivilStatus());
    inout.writeUTF(p.getProfession());
    inout.writeUTF(p.getPhone1());
    inout.writeUTF(p.getPhone2());
    inout.writeUTF(p.getEmail());
    inout.writeUTF(p.getMotherName());
    inout.writeUTF(p.getFatherName());
    inout.writeUTF(p.getMotherPhone());
    inout.writeUTF(p.getFatherPhone());
    inout.writeUTF(p.getMedication());
    inout.writeUTF(p.getDoctorsName());
    inout.writeUTF(p.getFrequency());
    inout.writeUTF(p.getPrice());
    System.out.println("names and sentinel value sent to file Countries.dat");

    inout.close();
}

// Ошибка в двух синих строках, и ошибка, которую она показывает:

Error: C:\Users\Pedro Quintas\Documents\Documents and Work
\Escola\Computer Science\Programs\Dossier\AddPatient.java:362:
unreported exception java.io.IOException; must be caught or
declared to be thrown

Скажите, пожалуйста, что изменить

1 Ответ

0 голосов
/ 21 января 2011

Ответ в сообщении об ошибке :) Вы должны обработать ваши исключения.Они не для того, чтобы просто взорвать вещи, когда дела идут немного косо - они для вас, чтобы вы могли понять, как вы хотите обрабатывать свои ошибки, когда они случаются.Это означает, что вы должны подумать о том, какие части вашей программы будут обрабатывать ошибки и какие части вашей программы предполагают, что ошибок не бывает.

ВыВозможно, вы захотите, чтобы ваш метод actionPerformed() разместил на экране диалоговое окно с сообщением об ошибке, чтобы предупредить пользователя о том, что кнопка «Сохранить» фактически отбросила всю его работу.В этом случае оберните все эти вызовы writeToFile() в блоки try / catch и обработайте их соответствующим образом.

Возможно, вы захотите, чтобы ваш writeToFile() зарегистрировал сообщение в экземпляре log4j, регистрирующем ваше приложение, или просто выплюнул что-ток стандартной ошибке или стандартному выходу при сбое записи.В этом случае undelcare throws IOException из вашего writeToFile(), оберните содержимое метода в блок try / catch и обработайте его соответствующим образом.

Обработка ошибок - это, по моему мнению, большая часть кодабольшинства приложений.Жаль, что школы не учат этому лучше, но у вас есть возможность узнать, какие компромиссы у вас есть, попробовав оба моих предложения здесь и заметив последствия в других местах программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...