根据我的研究,这个问题在.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”方法有一个用途,那就是捕获意外的异常并报告它们。它可以报告错误号和描述,以及异常的模块、行号和字符位置。当然,勤奋的开发人员会为预期的异常和业务逻辑异常编写代码。出错的事情是对没有水晶球的一个非常有用的答案。
我的C#伙伴告诉我使用try-catch,但同时他们说民间传说告诉我不要在每个方法中都放入大量的try-catch,因为这是不好的做法。
但是,当我询问这个民间传说的确切来源时,却没有答案。
那么,对于VB6 'on error goto catch-all label‘构造的C#等价物,2016年的答案是什么?为什么我不能有一个标准化的try-catch包装每个模块的内容,以实现相同的意外异常处理?
发布于 2017-02-16 19:11:03
当您不知道错误的性质时,您可以明智地做些什么?唯一明智的做法是尝试记录错误,然后关闭-你不能对程序的状态进行推理,你只知道它不是你想象的那样。
因此,处理这种情况的最佳位置是在AppDomain.UnhandledException或类似的地方(请注意,文档讨论了可能适用于某些特定应用程序模型的其他方法)。
这样,您只需编写一次代码-而不是每个函数一次。(除非您正在编写小型的“玩具”应用程序,否则如今编写单线程应用程序的情况已经不多见,而且至少必须为每个充当新线程入口点的函数重复On Error Goto模式)。
在其他地方,如果您正在编写try/catch,这应该是因为您有一个处理和恢复错误情况的特定策略。
https://stackoverflow.com/questions/42271995
复制相似问题