unhandled exception at try catch affect performance
我正在使用C桌面应用程序
我编写了一些这样的代码,在执行该代码时,它会落入catch块中。
1 2 3 4 5 6 7 8 9 10 11 | try { //come code } catch(exception ex) { } //some code 2 |
我还没有处理异常,因为我想在catch块外执行代码"一些代码2"
但在取消处理异常时,会降低执行性能
所以请给这个换个方案
不要对正常程序流使用异常。对于速度,例外情况没有进行优化,因为它们通常用于性能不再重要的情况。
创建异常时,它会收集大量信息,可用于排除错误,因此这需要一些时间。如果您已经在调试模式下编译了代码,它将收集更多的信息,这样做需要花费更多的时间。
无论您所做的是什么都会导致异常,请尝试在导致实际错误之前捕获该条件。例如,如果捕捉到一个被零除的除法,在进行除法之前应该检查被除的值。
抛出和捕获异常确实会影响性能,但这不是代码的最大问题。吞下这样的例外情况是不好的做法,也不是一个好主意来抓住
1 2 3 4 5 6 7 8 | try { // some code } finally { // some code 2 } |
或者您可以重新组织代码以避免使用
您可能希望为您的应用程序创建一个全局异常处理程序,最有可能使用
您应该重新构造代码以避免对控制流使用异常。
例外情况应保留在例外情况下。抛出和捕获异常时会有一个性能开销,这是无法避免的。大部分开销来自捕获堆栈跟踪、调用站点和其他要放入异常的信息。
另外要注意,调试模式显著增加了处理异常所需的时间。(所以如果你还没有在发布模式下尝试过,也许你应该先尝试一下——尽管这个答案第一行的建议仍然适用)。
另请参见msdn上的异常和性能;在前面的问题和答案中还可以找到很好的资源:C中的异常有多昂贵?.