我遇到了一个奇怪的问题。由于在GUI中按下按钮,我需要将一些文本导出到文件中。但是,我不能将IOException应用于事件调用的AbstractAction的actionPerformed方法。我不知道如何解决这个问题。
以下是导出类:
import java.awt.event.*;
import java.lang.*;
import java.util.*;
import java.io.*;
public class ExportRunner
{
public static void exportToFile(ArrayList<Locker> list) throws IOException
{
}
}
AbstractAction扩展名:
class Export extends AbstractAction
{
public Export()
{
super("Export");
}
public void actionPerformed(ActionEvent e)
{
ExportRunner.exportToFile(list);
}
}
答案 0 :(得分:3)
首先,您确定要重新抛出异常,或者更好地处理它和/或向用户显示消息吗?
public void actionPerformed(ActionEvent e) {
try{
ExportRunner.exportToFile(list);
} catch(IOException ioex) {
throw new RuntimeException(ioex);
}
}
public void actionPerformed(ActionEvent e) {
try{
ExportRunner.exportToFile(list);
} catch(IOException ioex) {
handleItOrShowMessageToUser(ioex);
}
}
答案 1 :(得分:1)
我通常会将“错误处理程序”传递给动作类,该动作类允许将处理显示/报告错误的责任委托给应用程序的另一部分......
像...一样的东西。
public interface ErrorListener {
public void errorOccurred(String msg, Exception exp);
}
然后你可以把它传给你......
public class Export extends AbstractAction
{
private ErrorListener errorHandler;
public Export(ErrorListener errorHandler)
{
super("Export");
this.errorHandler = errorHandler;
}
public void actionPerformed(ActionEvent e)
{
try {
ExportRunner.exportToFile(list);
} catch (IOException exp) {
errorHandler.errorOccurred("Failed to export file", exp);
}
}
}
显然,在某个地方,你需要一个实现来处理回调;)
您可能希望查看Exception trail以获取更多信息