2010-08-31 60 views
0

此問題是關於Windows的C++庫,我們使用Visual C++作爲我們的編譯器。在關閉異常處理的應用程序中使用啓用異常處理的庫

我們在庫中啓用了異常處理編譯器選項。我們也在一些地方使用throw/catch。

我們的一位客戶說他們在應用程序中禁用了異常處理選項。現在的問題是,如果他們使用我們的圖書館和他們的應用程序,他們是否會遇到任何問題。

+2

是的,他們會遇到問題。但是,他們可能習慣了這一點。畢竟,std lib在錯誤時會做什麼,它會在異常關閉時拋出異常?除了代碼不是異常安全外,您還有什麼理由關閉異常? (而且,正如我們大約十年前所發現的那樣,以這種方式編寫代碼會導致編程的黑暗面,可能'std :: exception'與你同在!) – sbi 2010-08-31 08:49:24

回答

0

如果任何異常可能會從您的庫中散發出來,那麼確實會有問題。請考慮您的庫是否引發了未捕獲的異常,然後將其傳播迴應用程序。由於該應用程序不支持異常,因此不會知道如何處理它,而且很可能會出現錯誤。如果幸運的話,它會崩潰而不是以一種模糊的方式默默地失敗。

如果您在庫內部捕獲所有異常,並且僅使用返回碼向外界發出問題,那麼事情可能會正常工作(請注意,這意味着公共API類的構造函數不能拋出,拋出是隻有他們可以報告問題的方式)。