Comment ignorer les exceptions dans les gestionnaires d’événements ?

la programmation


Récemment, j’ai découvert que Try…Catch capture également les exceptions dans les gestionnaires d’événements, ce qui ne semble pas correct. Voici le code :

BASIQUE
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

Ce que j’ai essayé :

Rechercher sur le Web. Lisez également la documentation.

Solution 1

Un événement est simplement un appel de fonction sur lequel vous ne contrôlez pas le moment où l’appel se produit. L’appel, et plus précisément l’adresse de retour de l’appel, est placé sur la pile comme n’importe quel autre appel de fonction.

Si vous souhaitez connaître les détails du fonctionnement de la gestion des exceptions, vous devez connaître la gestion structurée des exceptions (SEH) de Windows, sur laquelle les exceptions .NET sont implémentées. Matt Pietrek a écrit ce qui est probablement l’introduction définitive sur SEH en dehors de la documentation Microsoft. Tu peux le trouver ici[^].

Une fois que vous avez lu cela, Chris Brumme a un très bon article sur l’implémentation des exceptions .NET, ici[^].

Oh, et pour répondre à la question « Comment ignorer les exceptions dans les gestionnaires d’événements ? », vous ne pouvez pas.

コメント

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