我目前正在从事一个项目,但遇到了一些麻烦。我已经用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的基础,因此它可能是一个误导性的错误名称。
给定的文件可能具有几乎任何扩展名,该文件的内容必须格式正确。
最佳答案
在这种情况下,我将避免使用异常作为处理错误文件类型的主要方法。如果可以通过用户输入定期触发异常,则实际上不应将其视为异常。这是我要采取的方法:
这种方法为您提供了两全其美的机会-您有机会在提供无效数据时提醒用户,同时仍从WikiGraphs的角度确保所提供的信息是准确的。它为使用WikiGraph的开发人员提供了一种方法,可以确保他们的输入有效,而不必要求进行异常处理。
关于java - 在哪里处理异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2231749/