[英]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
。 -为您的文本字段考虑更多描述性名称。 name2
和name3
并没有说太多。
在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.