【发布时间】:2011-05-16 14:52:16
【问题描述】:
老实说,我对异常处理不是很有经验,因为经常因为我的懒惰,我倾向于不处理异常。所以这是一个非常基本的问题。
我想知道用异常处理方法来完成这种情况的最干净的方法是什么:
我有一个类(ConfigManager),它在其构造函数中读取一个文件,并且需要该文件存在才能正确构造,作为构造函数参数给出。 如果该文件不存在,我想捕获 FileNotFoundException,使用一些默认值创建该文件,然后使用现在可用的默认配置文件继续创建 ConfigManager 对象。
这里有一些代码:
class ConfigManager{
ConfigManager(String file){
try{
builder = builderFactory.newDocumentBuilder();
document = builder.parse (new FileInputStream(file));
....
}catch (FileNotFoundException e) {
File configFile = new File (file);
try {
configFile.createNewFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(configFile));
writer.write(this.defaultConfig);
writer.close();
return new ConfigManager(string); //Here's the problem. I can't do that but I need to try build ConfigManager again. How do that?
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
在创建默认配置文件后,如何构造一个新的 ConfigManager 对象? 这是处理此类异常的正确方法吗?
提前致谢
【问题讨论】:
-
第一个
catch之后是否缺少一些代码? -
我认为在这种情况下最好让构造函数抛出异常(即不在构造函数中处理它)。提供另一个不带 File 参数的构造函数来创建默认管理器。
标签: java file-io constructor exception-handling filenotfoundexception