我有一個類foo
(我不能修改)白衣只有一個構造函數,有一個參數是這樣的:Catch構造函數拋出錯誤?
foo bar("Hello!");
由於構造函數可以拋出一個錯誤,我想要實現的錯誤處理。我第一次嘗試是這樣的:
try {
foo bar("Hello!");
}
catch {
cerr << "Something went horribly wrong...";
return -1;
}
不過,現在foo
是try
塊的範圍內,並且不能用於其他地方。如果我理解正確的話,我不能聲明對象而不初始化它,所以我可以在try
塊之外聲明bar
。那麼我該怎麼做來捕獲構造函數拋出的錯誤呢?
編輯:澄清,這是在我的main
,並在catch
我將中止程序。此外,參數是一個將被打開的文件,所以沒有已知的安全輸入永遠不會引發異常。
將所有相關的代碼放在try塊中。或者在try塊中調用的函數中。 – juanchopanza
與相關的代碼,你的意思是使用該對象的代碼?這意味着我的大部分計劃。似乎只是爲了捕捉可能僅在初始化期間發生的錯誤? – Anders
那麼,你的程序大部分都可以包含在'main()'函數中,對吧?那麼爲什麼不把它包含在你放入try塊的另一個函數中呢? – juanchopanza