Projem, paylaşılan kütüphane ve exe istemcisi içerir. Kütüphaneden atılan kendi istisna sınıfımın istemci yakalama bloğu tarafından yakalanmadığını ve programın "bir örnek attığından sonra sonlandırıldı ..." mesajıyla sonlandığını buldum. Proje ile oynamaya devam ettim, herhangi bir türden herhangi bir istisnanın yakalanmadığını tespit ettim. Örneğin, bu yakalama çalışmaz:GCC programında istisnalar yakalanmaz
try { m_pSerialPort = new boost::asio::serial_port(m_IoService, "non-existing-port"); } catch(const boost::system::system_error& e) { // ... }
Hata mesajı:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl <boost::exception_detail::error_info_injector <boost::system::system_error> >' what(): No such file or directory
GCC sürüm 4.4.1, Linux işletim sistemidir. Aynı kod Windows, MSVC'de başarıyla çalışıyor. GCC programının istisnaları düzgün şekilde yakalamasını nasıl engelleyebilir?
Makefile'ı yayınlayabilir misiniz, böylece hangi argümanların gcc'ye geçtiğini görebiliriz? İstisnaları devre dışı bırakan argümanları iletebilirsiniz. –
Ek bilgi: Bu kodu eklediğimde: {throw 1;} catch (int) {} istemcisini çalıştırılabilir duruma getirin, her şey yolunda. Ancak, paylaşılan kitaplıktaki aynı kod şunları verir: 'int' örneğinin atılmasıyla çağrılan sonlandırma –
Göze Çarpan Derleyici: teknik soru. Makefile'yi buradan nasıl gönderebilirim? Yorum uzunluğu kısıtlıdır ve herhangi bir biçimlendirmeye izin vermez. –