2
我有一個構造函數,它在同一個類中調用另一個構造函數。問題是我想捕獲異常並將它們向前拋出到調用第一個構造函數的方法。但是Java不允許這樣做,因爲構造函數調用必須是構造函數中的第一條語句。從構造函數調用構造函數並捕獲異常
public Config(String fn) throws IOException, ExcFormattingError {
theFile = fn;
try { cfRead(); }
catch(FileNotFoundException e) {
//create a new config with defaults.
theConfig = defaultConfig();
create();
} catch (IOException e) {
throw new IOException(e);
} catch (ExcFormattingError e) {
throw new ExcFormattingError();
}
fixMissing(theConfig);
}
public Config() throws IOException, ExcFormattingError {
try {
//Line below is in error...
this("accountmgr.cfg");
} catch (IOException e) {
throw new IOException(e);
} catch (ExcFormattingError e) {
throw new ExcFormattingError();
}
}
如果有人能解釋我該如何做到這一點很好。獎金是知道爲什麼語言必須這樣做,因爲這總是很有趣。
爲什麼你抓住例外呢?如果你不抓住他們,他們只會回到所謂的第一個構造者身上。 –
請參閱http://stackoverflow.com/a/1168356/1729686爲什麼需要先調用this()和super()。 – Liam