我正在使用C#Desktop应用程序 我做了一些代码,以便在执行代码时它落入catch块
try
{
//come code
}
catch(exception ex)
{
}
//some code 2
我没有处理异常,因为我想在catch块之外执行代码 '部分代码2'
但是在处理异常时会降低执行的性能
所以请为此提供任何改变的解决方案
答案 0 :(得分:4)
不要将异常用于正常的程序流程。例外情况并未针对速度进行优化,因为它们通常用于性能不再重要的情况。
创建异常时,它会收集大量可用于解决错误的信息,因此需要一些时间。如果您已在调试模式下编译代码,它将收集更多信息,花费更多时间。
无论您正在做什么导致异常,请尝试在导致实际错误之前捕获该条件。例如,如果您将除法除以零,则应在进行除法之前检查要除的值。
答案 1 :(得分:1)
您应该重新构建代码,以避免使用控制流的异常。
例外情况应该保留给特殊事物。抛出和捕获异常会产生性能开销,这是无法避免的。大部分开销来自捕获堆栈跟踪,调用站点和其他信息以放入异常。
另外请注意,调试模式显着增加了处理异常所需的时间。 (所以如果你还没有在发布模式下尝试过,也许你应该先尝试一下 - 虽然这个答案第一行的建议仍然适用。)
另请参阅MSDN上的Exceptions and Performance;在上一个问题和答案中也可以找到很好的资源:How expensive are exceptions in C#?。
答案 2 :(得分:1)
抛出并捕获异常会对性能产生影响,但这不是代码中的最大问题。吞下这样的例外是不良做法,抓住System.Exception
也不是一个好主意。一般来说,您应该只捕获可以合理处理的异常,并允许其他任何事情冒泡。如果要在try
块之后执行代码,无论是否发生异常,请考虑使用finally
块。例如:
try
{
// some code
}
finally
{
// some code 2
}
或者您可以重新组织代码,以避免使用try-catch
或try-finally
。
您可能希望为应用创建全局异常处理程序,最有可能使用AppDomain.UnhandledException
事件进行日志记录等。