Bagaimana cara mengabaikan pengecualian di dalam event handler?

pemrograman


Baru-baru ini saya menemukan bahwa Try…Catch juga menangkap pengecualian di dalam event handler yang terasa salah. Ini kodenya:

DASAR
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

Apa yang saya coba:

Cari di Web. Baca juga dokumentasi.

Solusi 1

Suatu peristiwa hanyalah panggilan fungsi di mana Anda tidak mengontrol kapan panggilan itu terjadi. Panggilan tersebut, dan lebih khusus lagi, alamat pengirim untuk panggilan tersebut masuk ke dalam tumpukan sama seperti panggilan fungsi lainnya.

Jika Anda menginginkan detail terperinci tentang cara kerja penanganan pengecualian, Anda harus mengetahui tentang Penanganan Pengecualian Terstruktur (SEH) Windows, tempat pengecualian .NET diterapkan. Matt Pietrek menulis apa yang mungkin merupakan primer definitif tentang SEH di luar dokumentasi Microsoft. Kamu bisa menemukannya Di Sini[^].

Setelah Anda membacanya, Chris Brumme memiliki tulisan yang sangat bagus tentang implementasi pengecualian .NET, Di Sini[^].

Oh, dan untuk menjawab pertanyaan “Bagaimana cara mengabaikan pengecualian di dalam event handler?”, Anda tidak bisa.

コメント

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