在Try-Catch
程序中使用C#/Java
块如何影响其执行速度?
我正在编写数据库应用程序的开发过程(使用Visual C#),并且几乎所有可能导致错误的方法都使用了try-catch块,
但是,如果这样做会降低我的程序的执行速度,这很奇怪吗?
我知道还有其他因素会影响速度,但是这会减慢程序的速度吗?
答案 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)
{}
}
比这种类型的未处理异常导致低性能