2013-10-14 55 views

回答

5

通過引用捕獲異常。對託管異常的強烈要求,對於本機C++異常是可選的,但仍然是一個好主意。它只是拼寫不同:

try { 
    // stuff 
} 
catch (std::exception& ex) { 
} 
catch (System::Exception^ ex) { 
} 

抓住了他們,所有的異常處理然而幾乎從來沒有一個好主意。

2

趕上他們參照,避免切片爲std::exception派生的異常:

catch (std::exception &exp) 

這樣就可以適當地捕捉所有派生的異常。 (Polymorphism)

+0

良好的做法或所有原生的例外!只有當一個庫特別說明你必須通過指針捕獲異常時,你必須**通過指針捕獲。 – Henno

+1

@Henno:哦,上帝​​,有這樣的圖書館嗎?那太糟了。他們的圖書館以什麼方式打破了這種需求? –

+0

不!我的意思是用另一種方式:當**你**正在使用別人的nativ庫時,那麼...... – Henno

2

請閱讀this MS-Blog-Post。 特別是它說:「一般來說,更容易處理託管代碼中的本地錯誤/異常,反過來......」 受管異常以SEH異常的形式到達本地部分,並且信息比較減少管理ecxeptions。

所以,不,你的代碼片段不正確。