Java 无法在AbstractAction中使用IOException

Java 无法在AbstractAction中使用IOException,java,swing,export,ioexception,Java,Swing,Export,Ioexception,我遇到了一个奇怪的问题。我需要导出一些文本到一个文件作为按下一个GUI按钮的结果。但是,我不能将IOException应用于事件调用的AbstractAction的actionPerformed方法。我不知道如何避开这件事 以下是导出类: import java.awt.event.*; import java.lang.*; import java.util.*; import java.io.*; public class ExportRunner { public static vo

我遇到了一个奇怪的问题。我需要导出一些文本到一个文件作为按下一个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
  {

  }
}

首先,您确定要重新抛出异常,还是处理异常和/或向用户显示消息更好

选项1:重新抛出异常(我认为很难看): 选项2:捕获并处理它:
首先,您确定要重新抛出异常,还是处理异常和/或向用户显示消息更好

选项1:重新抛出异常(我认为很难看): 选项2:捕获并处理它:
我通常会将“错误处理程序”传递给action类,允许将处理显示/报告错误的责任委托给应用程序的另一部分

类似于

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);
        }
    }
}    
显然,在某些地方,您需要一个实现来处理回调;)


您可能想看看,以获取更多信息,我通常会将“错误处理程序”传递给action类,该类允许将处理显示/报告错误的责任委托给应用程序的另一部分

类似于

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);
        }
    }
}    
显然,在某些地方,您需要一个实现来处理回调;)


您可能想看看,了解更多信息

通常,我提供一个“错误管理器”,其职责是处理此类情况。它是一个基本接口,具有类似于
erroroccurrend
的方法,通常允许调用传回某种消息以及异常。另外,不要用长时间运行的任务或阻止调用(如IO;)来阻止事件调度线程和甘布一样,我几乎不知道异常是如何工作的。我只是想在导出类上绕过IOException要求。通常,我提供一个“错误管理器”,其职责是处理此类情况。它是一个基本接口,具有类似于
erroroccurrend
的方法,通常允许调用传回某种消息以及异常。另外,不要用长时间运行的任务或阻止调用(如IO;)来阻止事件调度线程和甘布一样,我几乎不知道异常是如何工作的。我只是想在导出类上绕过IOException要求。考虑到这是一个简单的、导出一个小文本文件的小程序,而且我现在不想陷入异常的世界,我将使用上面的示例。我想我最终会明白为什么它会起作用。谢谢你的帮助!考虑到这是一个简单的、导出一个小文本文件的小程序,而且我现在不想陷入异常的世界,我将使用上面的示例。我想我最终会明白为什么它会起作用。谢谢你的帮助!
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);
        }
    }
}