【发布时间】:2013-12-04 14:33:40
【问题描述】:
我大部分时间都被教导要始终从我的代码中删除 try/catch/finally 块。这背后的原因对我来说总是有意义的(如果你的应用程序按照它应该的方式工作,你不需要防止错误),但同时有很多事情会导致错误,而不是由于糟糕编码;服务器打嗝,图形似乎永远不会在无缘无故失败时失败,等等。我还被告知这些块会降低性能,我个人在使用它们时没有注意到,但我想这可能是案子。基本上我要做的是; Try/Catch/Finally 一个糟糕的整体想法,或者在某些情况下是另一个好的想法,当过度使用糟糕的代码以保持应用程序运行时不好,对测试有好处/对生产不好?只是想要一些意见。
【问题讨论】:
-
像所有语言功能一样,try/catch 可以用于好坏。通常,避免使用 catch 进行控制流。我认为“终于”不属于您所说的类别。在某些情况下,确保适当的资源清理是绝对必要的。我不认为做出笼统的“不使用它”决定是明智的。您需要评估每种情况以找到解决问题的最佳方法。有时,try/catch 就是一个答案。
-
经验法则非常简单...如果可能发生异常,请将其包装在异常处理程序中。不仅仅是catch异常,而是以某种方式有意义地handle它。不过,这都是猜测,没有具体的例子。你能用你被告知不正确的 try/catch/finally 使用的特定实例来更新问题吗?
-
示例:
File.ReadAllText在文件处于访问状态时抛出异常 - 如果不使用 try/catch,您将如何处理? -
@Shaharyar 我很确定 catch 块对性能的影响很小(如果有的话)。由于堆栈卷绕/展开,引发异常是导致性能下降的原因。
标签: c# coding-style try-catch standards