调用方法,从Action Performed创建一个文件

时间:2011-01-21 13:22:09

标签: user-interface try-catch ioexception throw

我正在尝试调用创建文件的方法,但是我从Action Performed调用该方法,它根本无法抛出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 :(得分:0)

答案在错误消息:)你必须处理你的例外。当事情略有歪斜时,它们不仅仅是为了解决问题 - 它们可以帮助您找出在发生错误时如何处理错误。这意味着您必须思考关于程序的哪些部分将处理错误条件,以及程序的哪些部分将假定错误不会发生。

您可能希望actionPerformed()方法在屏幕上放置一个错误对话框,提醒用户“保存”按钮实际上会丢弃所有工作。在这种情况下,将所有这些调用包装到try / catch块中的writeToFile()并适当处理。

您可能希望writeToFile()将消息记录到记录应用程序的log4j实例,或者只是在写入失败时将某些内容吐出到标准错误或标准输出。在这种情况下,来自throws IOException的undelcare writeToFile(),将方法的内容包装在try / catch块中并适当处理。

至少在我的经验中,处理错误是大多数应用程序的大部分代码。遗憾的是,学校并没有更好地教授它,但是通过在这里尝试我的两个建议并注意到程序中其他方面的影响,这是你学习设计权衡的机会。