C#/ Java中的Try-Catch是否会影响执行速度

时间:2014-01-03 05:06:25

标签: c# performance try-catch error-checking

Try-Catch程序中使用C#/Java块如何影响其执行速度? 我正在编写数据库应用程序的开发过程(使用Visual C#),并且几乎所有可能导致错误的方法都使用了try-catch块, 但是,如果这样做会降低我的程序的执行速度,这很奇怪吗?

我知道还有其他因素会影响速度,但是这会减慢程序的速度吗?

6 个答案:

答案 0 :(得分:3)

通常,只要不抛出异常,它对代码没有影响。抛出异常时,它通常会使应用程序变慢,因为这是一项代价高昂的操作。然而,您应该阅读非常有趣的讨论here

答案 1 :(得分:0)

由于您的应用程序是数据库驱动的,我会说数据库调用所花费的时间很可能会使try / catch块引入的任何性能损失相形见绌。如果try / catch是你想要做的事情的适当构造,那么一定要这样做。

答案 2 :(得分:0)

不确定Java,但在C#中,成本非常低,但是,我质疑这样做的逻辑。我更喜欢Yoda方法。做或不做。没有尝试。

你有什么捕获块吗?如果您对日志记录感兴趣,可以使用异常过滤器(VB.NET中的CATCH WHEN)来捕获有关异常的信息,并使用反射来记录各种数据。

答案 3 :(得分:0)

是的,Try / Catch会影响您的表现。 有关详细信息,请查看this链接。

答案 4 :(得分:0)

尝试catch块仅在您的程序通过获取意外输入而获得错误时执行。否则它只是用于设置标志。所以它不会影响执行时间或速度。

答案 5 :(得分:0)

当未处理的异常和未处理的异常导致低性能时,它会影响 看看这可能是有帮助的 Tyr/Catch

例如,您在combobox选择的索引更改事件

上添加了一些代码
 private void cmbMedium_SelectedIndexChanged(object sender, EventArgs e)
        {
           //Some Code
        }  

并且在Form Load事件中在组合框中设置DataSource或Add Items,而不是在设置DataSource或添加项cmbMedium_SelectedIndexChanged事件触发器时设置 此时有些人会在cmbMedium_SelectedIndexChanged这样的<{p}}上放置未处理的例外情况

private void cmbMedium_SelectedIndexChanged(object sender, EventArgs e)
{
  Try
     {
       //Some Code
     }
  catach(Exception ex)
     {}
}  

比这种类型的未处理异常导致低性能