Bir C++ kitaplığındaki/özel bir durumdaki istisnalar atmanın özellikle DLL'lerde ve özellikle de arama kodu ve kitaplığın farklı derleyicilerle derlenmesi durumunda potansiyel olarak tehlikeli olabileceğini duydum. Bunun için bir gerçek var mı? Statik kütüphanelere sadık kaldığım sürece güvenli mi? Ben sadece kütüphanede istisnaların iç kullanımı hakkında konuşmuyorum unutmayın, ben de çağrı kodu içine derin onları atmak istiyorum :)Statik olarak bağlantılı C++ kütüphanelerinden istisnalar atmak güvenli değil mi?
Sadece açıklamak için: Ben gibi sınıf Foo tanımlayan derlenmiş bir statik kütüphanesi var mı Bu:
class Foo
{
public:
// Constructor
Foo()
{
/* ... Do stuff ... */
if (stuffwentwrong)
throw(123); // We throw an integer error code (to make it simple)
}
};
Ve biraz adam şöyle kullanır:
try
{
Foo foo_object;
}
catch (int i)
{
std::cout << "Oh bum. Code: " << i;
}
bu güvenli olur mu?
(dinamik tek başınıza DLL boşaltma/yükleme gibi korkak şeyler yapıyorsun sürece) (yaklaşık 15 yıl önce) bu çözüldüğünü sorunlar vardı. Sadece bir DLL kullanarak düz iseniz o zaman iyi olmalısınız. –