does try catch clause affect performance?
如果try块中没有异常,try/catch是否会影响性能?埃多克斯1〔2〕怎么样?
- 如果不引发异常,try/catch块的可能重复会损害性能?
- @这是什么问题????.Try/Catch是处理各种异常的每个方法的必备项。当软件产品不能优雅地失败或从错误中恢复时,它的用途是什么??当基础本身薄弱时,性能有什么作用。
- stackoverflow.com/questions/1771216/…的可能副本
- 如果我对每一个"x是否影响性能"都有一分钱,"x是否比y快"问题…真的,你们需要一个爱好。或者介绍一下在哪里可以找到优化机会,在哪里不可以(甚至在你不应该尝试的时候)。
- @德尔南-你会是个有钱人!!但你的银行不会很喜欢你,因为你要把所有的硬币都投进去。
- @一个变量:"Try/Catch对于每个方法都是必须的"…我不同意那个说法。很多。除非你真的打算以某种方式来处理,否则抓住一个例外是没有意义的。不是所有的方法都需要这个。公开可能抛出异常的方法没有什么错,应该只记录它们可能抛出的内容和原因。
try/catch和try/catch/finally都不会在很大程度上影响性能。当然,正在创建的异常确实会影响性能(即是否捕获它们)
当不抛出异常时,try/catch块是否会损害性能?
try/catch只会在引发异常时影响性能(但这仍然不是因为try/catch,而是因为正在创建异常)。
try/catch/finally没有在try/catch上增加任何额外的开销。
创建异常确实会导致一些性能成本。一般来说,只有当代码中的某一点上确实需要处理某个异常时,才希望捕获该异常。
请注意,为了在潜在故障后关闭资源或执行其他必要的任务,您可以简单地使用try/finally块。finally仍将按其应该的方式执行,您只是在过程中没有捕获到异常。相反,你让它冒泡到它需要去的任何地方。
- 您的回答没有什么不正确的地方,但我想说一点,无论您是否捕获到异常,都不会对性能产生真正的影响(除了应用程序崩溃的明显影响,如果它根本没有被处理)。我添加这个细节仅仅是因为操作看起来有点集中于捕获异常是否有一些效果。正如您所注意到的,这是一个"重"异常的创建,而不是处理/不处理。
- @安德鲁·巴伯:没错。你的回答肯定比我的好。我只是把注意力更多地放在了不想被别人抓住的问题上,我想这与最初的问题是相切的。我看到过很多代码,在这些代码中,除了再次抛出异常,或者甚至实例化一个新的(自定义)异常并将捕获的异常添加到异常中之外,没有其他原因可以捕获异常。
- 我已经看到了在一个非常紧密的循环中执行后一种操作的代码,这个循环在阻塞UI时迭代数百次,在这个循环中至少10%的迭代可以导致异常。快乐时光!
不,当不引发异常时,try/catch块不会产生任何性能成本。
在这里阅读一篇关于此的伟大的msdn文章:http://msdn.microsoft.com/en-us/library/ms973839.aspx