使用保护子句防止异常还是捕获异常更好?有最佳实践吗?两种方法的优缺点?
例如更好的是:
try
{
param=myArray[3];
}
catch (IndexOutOfRangeException e)
{
do something...
}
或这个:
if(myArray.Length < 4)
{
do something...
}
else
{
param=myArray[3];
}
谢谢大家的回答:)
使用保护子句防止异常还是捕获异常更好?
在诸如索引超出范围之类的“愚蠢”异常的情况下,始终是前者。
在“外生”异常的情况下,总是后者。
两种方法的优缺点?
在愚蠢的例外情况下,只有后者的缺点。他们是:
最后,你应该阅读我关于这个主题的文章。
使用保护子句 - 捕获异常会产生高昂的运行时成本,并且通常为了提高可读性,您应该只将异常用于错误条件,而不是用于正常控制流
保护条款。您永远不想将try
/catch
用于控制流。捕获异常是昂贵的,应该尽可能避免。
在可以防止异常的情况下,阻止它。总是。
捕获和处理异常是昂贵的,不应该用于正常的控制流。警卫既便宜又容易。