C# 使用异常块.net
我在一篇文章中读到,在代码中编写许多try-catch异常块将增加性能开销 这是真的吗?为什么声明许多异常块会影响性能 谢谢C# 使用异常块.net,c#,.net,C#,.net,我在一篇文章中读到,在代码中编写许多try-catch异常块将增加性能开销 这是真的吗?为什么声明许多异常块会影响性能 谢谢 SCATry/catch块不会产生太多性能开销 抛出异常确实有一些开销,但这不应该是一个问题——异常应该是异常的 本文更详细地介绍了如何实现try/catch块及其运行时成本:我认为下面的引文很好地总结了异常 如果您担心异常性能,那么您使用它们是错误的 如果按照预期的方式使用异常,则异常不会对应用程序的性能产生重大影响。这是针对特殊情况的 关于异常性能有很多不好的信息。如
SCATry/catch块不会产生太多性能开销
抛出异常确实有一些开销,但这不应该是一个问题——异常应该是异常的
本文更详细地介绍了如何实现try/catch块及其运行时成本:我认为下面的引文很好地总结了异常 如果您担心异常性能,那么您使用它们是错误的 如果按照预期的方式使用异常,则异常不会对应用程序的性能产生重大影响。这是针对特殊情况的
关于异常性能有很多不好的信息。如果你能发布一个你正在阅读的文章的链接,这样我们就可以了解他们为什么认为这会是一个问题。它们可能涵盖了一个不适用于大多数情况的特殊情况方面。以下是一篇关于异常开销的好文章,作者是: 以下是文章中的一个简单示例:
Console.WriteLine(Now().ToString("hh:mm:ss.fffffff"))
DoNothingImportant()
ThrowRecursiveExceptions(1000)
Console.WriteLine(Now().ToString("hh:mm:ss.fffffff"))
Output:
10:57:38.0252702
10:58:39.9205680
你可以看到这大约需要2分钟,但由于它们只用于特殊行为,我不担心。此外,通过捕获和日志记录发现的真正的“异常”,如果您能够立即修复它,而不是在问题悄无声息地失败时尝试进行鬼调试,那么它对您的价值将大得多。(很抱歉没有直接回答您的问题)
在希望捕获潜在但罕见、失败或异常行为(如读取文件或查询数据库)的位置,建议使用Try/Catch异常块。您可能还希望将try/catch块放在函数无法履行其契约的位置
使用断言捕获永远不会发生的bug或缺陷。还可以将断言用作自文档代码。(请参阅《代码完成》第二版中的“防御性编程”一章)。“异常应该是异常的”——准确地说。我认为这一点表达得再好不过了。看看这个