C# - try和catch语句使用

Eya*_*yal 2 c# robust try-catch visual-studio

这是一个很好的做法,用try和catch来包装每个函数吗?

我正在用c#构建一个服务器,并且我试图了解是否有一种方法可以使其更加健壮并且可以防止崩溃,使用try&catch语句将其中的每个函数包装起来.

这样做是否合理?

Jon*_*eet 8

这是一个很好的做法,用try和catch来包装每个函数吗?

绝对不.这是灾难的一个方法 - 这意味着即使出现问题并且状态已经腐败,您也可能会继续尝试继续处理请求.

通常,您应该只有catch块,您可以在其中实际处理异常并继续成功; 否则,你应该让异常泡沫化.因此,您可能希望有一个catch块来重试某些操作,但只需要特定的操作.

然后,您可以catch在顶层有一个块,以阻止服务器本身崩溃.您还没有告诉我们您正在构建什么样的服务器 - 框架本身可能提供这样的适当catch块.

捕获异常的另一个原因是将其包装并重新抛出它作为更合适的隐藏实现细节,并可能添加更多上下文.坦率地说,这可能有点痛苦,并且仅在某些情况下有用.这实际上取决于抛出异常的代码,以及您期望如何处理异常.

  • 我认为你应该补充说,为了向更高级别的处理程序添加更多相关但不可用的更多信息来调试问题,可能会因为捕获异常而抛出自己的异常,包装原始异常. (2认同)