我试图通过按钮按下创建一个文件,但我一直遇到错误

时间:2013-05-14 20:26:09

标签: java android

我正在创建支票簿,无法为每个单独的帐户创建要写入的文件。当我尝试创建文件时,我收到错误“未报告的异常IOException;必须被捕获或声明被抛出”。我尝试声明我的动作侦听器方法抛出异常,但这使得动作侦听器方法不再能够工作。然后我尝试创建一个单独的方法来创建文件,并按下按钮调用,但我仍然遇到相同的错误

这是我的代码:

public void actionPerformed(ActionEvent e) {

    ...

    if (e.getSource() == create)  {
         creatNewAccount(name3.getText());
         BALANCE = Double.parseDouble(name2.getText());
    }
}
public void creatNewAccount(String s) throws IOException {
    FileWriter fw = new FileWriter(s + ".txt", false);
}

4 个答案:

答案 0 :(得分:2)

IOException是一个经过检查的例外。鉴于您在ActionListener内调用它,重新抛出异常不是一个选项,因此您需要捕获它。

try {
   creatNewAccount(name3.getText());
} catch (IOException e) {
   e.printStackTrace();
   // more exception handling
}

答案 1 :(得分:2)

声明

creatNewAccount可能会抛出IOExceptionIOException不是RuntimeException,所以你必须抓住它。

if (e.getSource() == create)  {
     try {
         creatNewAccount(name3.getText());
     } catch (IOException ie) {
         ie.printStackTrace();
         // handle error
     }
     BALANCE = Double.parseDouble(name2.getText());
}

有关详情,请参阅The Catch or Specify RequirementCatching and Handling Exceptions


我注意到的其他一些事情:   - 您要找的单词是 create ,而不是 creat 。   - 您正在为BALANCE分配内容。大写名称通常保留给常量。考虑重命名此变量balance。   - 考虑文本字段的更具描述性的名称。 name2name3并没有多说。

答案 2 :(得分:1)

actionPerformed()中,您需要在createNewAccount电话周围放置一个try / catch块。一旦抓到异常你做什么取决于你 - 一个简单的事情是把它包裹在一个RuntimeException中,不需要被捕获(但可能会破坏你的过程,直到你做更精细的事情为止)。

public void actionPerformed(ActionEvent e) {

    ...

    if (e.getSource() == create)  {
         try {
             creatNewAccount(name3.getText());
         } catch( IOException ioe) {
             System.err.println("Whoops! " + ioe.getMessage());
             throw new RuntimeException("Unexpected exception", ioe);
         }
         BALANCE = Double.parseDouble(name2.getText());
    }
}

答案 3 :(得分:1)

您可能只需要在方法中捕获异常:

public void creatNewAccount(String s) {
    try{
        FileWriter fw = new FileWriter(s + ".txt", false);
    } catch (IOException e){
        //TODO something to handle the error
    }
}