इवेंट हैंडलर के अंदर अपवादों को कैसे अनदेखा करें?


हाल ही में मुझे पता चला है कि ट्राई…कैच इवेंट हैंडलर के अंदर अपवादों को भी पकड़ लेता है जो गलत लगता है। यहाँ कोड है:

बुनियादी
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

एक ईवेंट केवल एक फ़ंक्शन कॉल है जहां कॉल होने पर आप नियंत्रित नहीं करते हैं। कॉल, और अधिक विशेष रूप से, कॉल का रिटर्न पता किसी अन्य फ़ंक्शन कॉल की तरह ही स्टैक पर जाता है।

यदि आप अपवाद हैंडलिंग कैसे काम करती है, इसकी विस्तृत जानकारी चाहते हैं, तो आपको विंडोज स्ट्रक्चर्ड एक्सेप्शन हैंडलिंग (एसईएच) के बारे में जानना होगा, जिस पर .NET अपवाद लागू किए जाते हैं। मैट पिएट्रेक ने Microsoft दस्तावेज़ के बाहर SEH पर संभवतः निश्चित प्राइमर लिखा है। आप इसे पा सकते हैं यहाँ[^].

एक बार जब आप इसे पढ़ लेंगे, तो क्रिस ब्रुमे के पास .NET अपवाद कार्यान्वयन पर एक बहुत अच्छा लेख है, यहाँ[^].

ओह, और इस प्रश्न का उत्तर देने के लिए कि “इवेंट हैंडलर के अंदर अपवादों को कैसे अनदेखा करें?”, आप नहीं कर सकते।

コメント

タイトルとURLをコピーしました