【发布时间】:2009-07-30 06:22:58
【问题描述】:
.NET 是否有类似于 Delphi 的 EAbort 的异常?
目前,我定义了自己的“AbortProcess”继承异常。 与忽略“AbortProcess”的 My.Application.UnhandledException 处理程序一起 我仍然想知道 .NET 中是否已经存在类似的机制。
Class AbortProcess
Inherits System.Exception
End Class
Sub Abort()
Throw New AbortProcess()
End Sub
Sub AppDomain_UnhandledException(ByVal sender As Object, ByVal e As ApplicationServices.UnhandledExceptionEventArgs)
If TypeOf e.Exception Is AbortProcess Then
e.ExitApplication = False
End If
End Sub
Sub PerformActions()
Action1()
If Not Action2() Then
Abort()
End If
Action3()
...
End Sub
典型的 .NET 开发人员如何处理这个用例?
更新:
不幸的是,由于某些原因,许多人对这个问题投了反对票,但没有发表任何评论。我能弄清楚的唯一原因是他们可能认为 Exception 永远不应该用于控制程序流;我倾向于同意这一点。但是,我最近研究了 ANTLR,发现它们确实使用自定义异常 (RecognitionException) 作为控制流构造。结合 Python 的 StopIteration 用法,我相信使用 Exception 作为控制流构造实际上已经被广泛使用。它只是不像 Delphi VCL 那样被标准化。
【问题讨论】:
-
哎呀!谁他妈的给我投反对票?!?!?!?我只是一个尝试进入.NET 编程的Delphi 程序员。我发现 .NET 中缺少一些 Delphi 概念,所以我在这里寻求正确的方法。这怎么了?!?!?!?