如何忽略事件处理程序内的异常?


最近我发现 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 在 Microsoft 文档之外撰写了可能是有关 SEH 的权威入门读物。 你可以找到它 这里[^]。

读完后,Chris Brumme 对 .NET 异常实现有一篇非常好的文章, 这里[^]。

哦,要回答“如何忽略事件处理程序内的异常?”这个问题,你不能。

コメント

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