gpt4 book ai didi

c# - C# 中 'on error goto [catch-all] label' 的现代方法

转载 作者:行者123 更新时间:2023-12-03 08:11:30 24 4
gpt4 key购买 nike

根据我的研究,在 dot net 的早期,这个问题被问了很多,但恕我直言,很多回答有点刻薄,而且“这就是我们现在做的方式”的风格。让我们看看网络是否长大了一点。

大约 1992 年的例子:

Sub Main()
On Error GoTo ErrHand
....Code Here
End Sub

ErrHand:
' raise error nicely here inc error no, desc, line & character pos
End Sub

虽然笨拙,但 VB6 可用的“on error goto [catch-all] label”方法有一个用途,即捕获意外异常并报告它们。它可以报告错误号和描述,以及异常的模块、行号和字符位置。勤奋的开发人员当然会为预期的异常和业务逻辑异常编写代码。错误是没有 Crystal 球的一个非常有用的答案。

我的 C# 伙伴告诉我使用 try-catch,但同时他们说民间传说说不要在每个方法中都使用大的 try-catch,因为这是不好的做法。

但是当我询问民间传说的确切来源时,没有答案。

那么 - VB6 'on error goto [catch-all] label' 构造的 C# equiv 的 2016 年答案是什么,为什么我不能有一个标准化的 try-catch 包装每个模块的内容以产生同样的意外异常处理?

最佳答案

当您不知道错误的性质时,您可以明智地做什么?几乎唯一明智的做法是尝试记录错误然后关闭 - 您无法推断程序的状态,您所知道的只是它不是您认为的那样。

因此,处理这种情况的最佳位置是 AppDomain.UnhandledException 或类似的(请注意,文档讨论了可能适用于某些特定应用程序模型的其他方法)。

这样,您只需编写一次代码 - 而不是每个函数一次。 (除非您正在编写小型“玩具”应用程序,否则如今编写单线程应用程序已经非常罕见,并且至少必须为每个作为入口点的函数重复 On Error Goto 模式。一个新线程)

其他任何地方,如果你正在写 try/catch ,应该是因为你有一个特定的策略来处理和从错误情况中恢复。

关于c# - C# 中 'on error goto [catch-all] label' 的现代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com