关于性能:Try-Catch影响执行速度

Does Try-Catch in C#/Java affect execution speed

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

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


通常,只要不引发异常,它就不会对代码产生影响。当抛出异常时,通常会减慢应用程序的速度,因为这是一个代价高昂的操作。不过,这里有一个非常有趣的讨论,您应该阅读一下。


当u个未处理的异常和未处理的异常导致性能低下时,它会影响看看这个可能会有帮助TYR/渔获量

例如,您在ComboBox选择的索引更改事件上放置了一些代码

1
2
3
4
 private void cmbMedium_SelectedIndexChanged(object sender, EventArgs e)
        {
           //Some Code
        }

在窗体加载事件中设置数据源或在组合框中添加项,而不是在设置数据源或添加项cmbMedium_SelectedIndexChanged事件触发器时这时,有些人对cmbMedium_SelectedIndexChanged这样提出了未处理的异常

1
2
3
4
5
6
7
8
9
private void cmbMedium_SelectedIndexChanged(object sender, EventArgs e)
{
  Try
     {
       //Some Code
     }
  catach(Exception ex)
     {}
}

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


只有当您的程序因得到意外的输入而出错时,才会执行Try-Catch块。否则它只是用来设置标志。所以它不会影响执行时间或速度。


是的,尝试/捕获会影响您的性能。有关详细信息,请查看此链接。


不确定Java,但是在C语言中,成本非常低,但是,我怀疑这样做的逻辑。我更喜欢尤达方法。做还是不做。没有尝试。

你想让接球台做什么?如果您对日志记录感兴趣,可以使用异常过滤器(在vb.net中捕获)在异常首次发生时捕获有关该异常的信息,并使用反射记录所有类型的数据。


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