繁体   English   中英

我正在尝试通过按钮创建文件,但是我一直遇到错误

[英]I am trying to create a file via a button press but i keep running into an error

我正在创建支票簿,并且无法为每个单独的帐户创建要写入的文件。 当我尝试创建文件时,出现错误“未报告的异常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);
}

IOException是一个检查的异常。 鉴于您是在ActionListener调用它,因此无法抛出异常,因此您需要捕获它。

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

creatNewAccount被声明为可能抛出IOException IOException不是RuntimeException ,因此您必须捕获它。

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

有关更多信息,请阅读有关捕获或指定需求以及捕获和处理异常的信息


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

actionPerformed()您需要在createNewAccount调用周围放置try / catch块。 一旦捕获到异常,您要执行的操作就由您自己决定–一件容易的事是将其包装到不需要捕获的RuntimeException中(但可能会使您的过程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());
    }
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM