老实说,我对异常处理不太有经验,因为我经常因为懒惰而倾向于不处理异常。这是一个非常基本的问题。
我想知道实现这种情况的最简洁方法是什么,以及异常处理方法:
我有一个类(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 对象? 这是处理此类异常的正确方法吗?
提前致谢
最佳答案
您可以做的是在尝试解析文件之前确保该文件存在。
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e) {
BufferedWriter writer = new BufferedWriter(new FileWriter(configFile));
writer.write(defaultConfig);
writer.close();
fis = new FileInputStream(file);
}
try{
builder = builderFactory.newDocumentBuilder();
document = builder.parse (fis);
关于java构造函数中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6019183/