Dan*_*kin 5 c# exception-handling exception
可能重复:
.NET异常有多慢?
是否存在抛出异常并立即捕获的开销?这有什么区别
void DoSomething(object basic)
{
try
{
if (basic == null)
throw new NullReferenceException("Any message");
else
{
//...
}
}
catch (Exception error)
{
_logger.WriteLog(error);
}
}
Run Code Online (Sandbox Code Playgroud)
这个(这里我们不抛出异常):
void DoSomething(object basic)
{
try
{
if (basic == null)
{
_logger.WriteLog(new NullReferenceException("Any message");
return;
}
else
{
...
}
}
catch (Exception error)
{
_logger.WriteLog(error);
}
}
Run Code Online (Sandbox Code Playgroud)
第二个片段会更快吗?
此外,我想知道为什么一个解决方案比另一个更快.
异常比所有其他程序流都慢,但不是出于性能原因应该避免的程度。但是,它们并不打算用于程序流程。在您的情况下,您有一个非常有效的替代方案,它比使用异常更好。当您可以预测情况并无例外地适当处理时,请始终这样做。另外,为了方便,不要在正常程序流中使用异常。
当您遇到无法直接处理的意外异常情况时,请使用异常。