2011-01-21 1 views
0

Я пытаюсь вызвать метод, который создает файл, но я называю этот метод от действий Исполняется, который просто не может иметь броски 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 

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

+0

Это (а) так же плохо, как и (б) идентично первому вопросу (http://stackoverflow.com/questions/4758407/call-method-that-creates-a-file-from- the-action-done) – skaffman

ответ

0

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

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

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

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

+0

Как я могу справиться с ошибками, которые могут возникнуть? –

+0

Что мне нужно поймать в этом примере? –

+0

УСПЕХ !!!! Мне пришлось написать попытку и уловить при вызове метода: D –

Смежные вопросы