我聽說從C++庫中拋出異常可能具有潛在的危險性,特別是對於DLL,特別是如果調用代碼和庫是用不同的編譯器編譯的話。有沒有道理呢?只要我堅持靜態庫,它是否安全?請注意,我並不只是在庫內部使用異常,我想把它們深入到調用代碼中:)不安全從靜態鏈接的C++庫中拋出異常?
只是澄清:說我有一個編譯的靜態庫,它定義類Foo這樣的:
class Foo
{
public:
// Constructor
Foo()
{
/* ... Do stuff ... */
if (stuffwentwrong)
throw(123); // We throw an integer error code (to make it simple)
}
};
而有些人使用它是這樣的:
try
{
Foo foo_object;
}
catch (int i)
{
std::cout << "Oh bum. Code: " << i;
}
請問這是安全的?
有問題(15年前),這些都已經解決了(除非你正在做的事情時髦像動態加載/全部由自己卸載DLL)。如果你只是直接使用DLL,那麼你應該沒問題。 – 2010-08-12 19:50:54