老實說,我對異常處理並不是很有經驗,因爲通常對於我的懶惰,我傾向於不處理異常。所以這是一個非常基本的問題。在構造函數中的異常處理
我想知道什麼是做到這一點的情況最乾淨的方式,異常處理方法:
我有一個類(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」之後是否有一些代碼丟失? – trashgod 2011-05-16 15:10:08
我認爲在這種情況下最好讓構造函數拋出異常(即不要在構造函數中處理它)。提供另一個不帶File參數的構造函數來創建默認管理器。 – 2011-05-16 15:14:01