[ad_1]
لقد اكتشفت مؤخرًا أن Try…Catch يلتقط أيضًا الاستثناءات داخل معالجات الأحداث والتي تبدو خاطئة. هنا الكود:
أساسي
Module Module1 Event ExEvent() Sub Main() AddHandler ExEvent, AddressOf ExEventHandler Try REM Exception from event handler propagates here RaiseEvent ExEvent() Catch ex As Exception Console.WriteLine(ex.Message) End Try Console.ReadKey() End Sub Private Sub ExEventHandler() Throw New NotImplementedException End Sub End Module
ما حاولت:
ابحث في شبكة الانترنت. اقرأ أيضًا الوثائق.
الحل 1
الحدث هو مجرد استدعاء دالة حيث لا يمكنك التحكم في وقت حدوث المكالمة. يتم إرسال المكالمة، وبشكل أكثر تحديدًا، عنوان المرسل للمكالمة إلى المكدس تمامًا مثل أي استدعاء دالة آخر.
إذا كنت تريد الحصول على تفاصيل دقيقة حول كيفية عمل معالجة الاستثناءات، فسوف تحتاج إلى معرفة كيفية معالجة الاستثناءات الهيكلية لـ Windows (SEH)، والتي يتم فيها تنفيذ استثناءات .NET. كتب Matt Pietrek ما هو على الأرجح الكتاب التمهيدي النهائي لـ SEH خارج وثائق Microsoft. يمكن ان تجدها هنا[^].
بمجرد قراءتك لذلك، سيكون لدى كريس بروم مقالة جيدة حقًا حول تنفيذ استثناءات .NET، هنا[^].
أوه، وللإجابة على السؤال “كيفية تجاهل الاستثناءات داخل معالجات الأحداث؟”، لا يمكنك ذلك.
[ad_2]
コメント