dlopen في المكتبة مع عضو ثابت يطرح استثناءً في المُنشئ - يؤدي إلى إحباط
-
03-07-2019 - |
سؤال
أحاول تحميل مكتبة ديناميكية باستخدام وظيفة dlopen.تحتوي هذه المكتبة على كائن ثابت، والذي يطرح استثناءً في منشئه.لدي كتلة "try-catch(...)" حول مكالمة dlopen، لكنها لا تلتقط الاستثناء، وأرى فقط كلمة "Abort" مطبوعة.
كيف يمكنني التقاط هذا الاستثناء؟
المحلول
اجابة قصيرة:لا يمكنك
التفكير في الأمر مرة أخرى.
تظل البيانات الأصلية صحيحة، لكن يجب أن تتذكر أيضًا أن dlopen() هي إحدى وظائف مكتبة C.C لا يدعم الاستثناءات.وبالتالي فإن طرح استثناء يعبر من كود C++ إلى كود C (الكائن العام الخاص بك حتى dlopen() ) سيؤدي أيضًا إلى إنهاء التطبيق.
انظر هنا:لماذا لا يتم استدعاء المدمر للاستثناء؟
هذه هي المواقف التي يؤدي فيها طرح الاستثناء إلى إنهاء التطبيق.يتم تغطية حالتك المحددة من خلال:
استثناء يهرب من المنشئ/المدمر للثابت غير المحلي (أي العالمي)
لا تنتمي إلى StackOverflow