我听说在C++库中抛出异常可能存在潜在的危险,特别是对于DLL,尤其是如果调用代码和库使用不同的编译器。这是真的吗?只要我坚持使用静态库,就安全了吗?请注意,我不仅谈论库内部对异常的使用,我还想将它们抛到调用代码中深处 :)
仅作澄清:假设我有一个已编译的静态库,它定义了类Foo,如下所示:
仅作澄清:假设我有一个已编译的静态库,它定义了类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;
}
这样做安全吗?