我目前正在从事一个项目,但遇到了一些麻烦。我已经用Java编程了大约两年了,我介绍了一些异常,但从未正确地理解它们。

在当前情况下,我有用于初始化类的main方法

WikiGraph wiki = wiki = new WikiGraph(getFile());

Wikigraph构造函数采用一个文件名,该文件名是通过getFile()方法中的对话框获得的。

Wikigraph的构造函数然后调用一种称为loadfile(filename)的方法,该方法试图加载和解析给定的文件。
loadfile()方法是我将引发IncorrectFileTypeError的地方。

我的问题是,我应该在哪里处理?

目前,我在loadfile()方法中捕获了它
try {
    //load file
} catch (IncorrectFileTypeError e){
    System.out.println("Incorrect file type: "+filename+": "+e.getMessage());
    throw new IncorrectFileTypeError();
}

但是我也可以在WikiGraph初始化中捕获它,如下所示:
while(wiki==null){                          //While There is no valid file to add to the wikigraph
    try {
        wiki = new WikiGraph(getFile());    //Try to load file
    } catch (IncorrectFileTypeError e) {    //If file cannot be loaded
        JOptionPane.showMessageDialog(null, "Incorrect File Type Given. Please Choose another file."); //Display error message
        getFile();                          //Prompt user for another file
    }
}

现在,我处理错误的方法是正确/最佳方法吗?还是应该在其他地方处理,例如getFile()方法?

编辑:我想我应该使文件问题更加清楚。
文件扩展名不是IncorrestFileTypeError的基础,因此它可能是一个误导性的错误名称。
给定的文件可能具有几乎任何扩展名,该文件的内容必须格式正确。

最佳答案

在这种情况下,我将避免使用异常作为处理错误文件类型的主要方法。如果可以通过用户输入定期触发异常,则实际上不应将其视为异常。这是我要采取的方法:

  • 通过标准控制流检查文件类型,并在文件类型无效时警告用户。您可能会考虑在WikiGraph上使用IsFileValid(filename)
  • 之类的静态方法
  • 在WikiGraph初始化中,如果文件类型无效,则引发异常。

  • 这种方法为您提供了两全其美的机会-您有机会在提供无效数据时提醒用户,同时仍从WikiGraphs的角度确保所提供的信息是准确的。它为使用WikiGraph的开发人员提供了一种方法,可以确保他们的输入有效,而不必要求进行异常处理。

    关于java - 在哪里处理异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2231749/

    10-12 12:46
    查看更多