使用guard子句防止异常或捕获异常是否更好? 有最好的做法吗? 这两种方法的利弊是什么?
例如,这更好:
try
{
param=myArray[3];
}
catch (IndexOutOfRangeException e)
{
do something...
}
或者这个:
if(myArray.Length < 4)
{
do something...
}
else
{
param=myArray[3];
}
谢谢大家的答案:)
答案 0 :(得分:17)
使用保护子句 - 捕获异常会导致高运行时成本,并且通常为了提高可读性,您应该仅对错误条件使用异常,而不是正常控制流
答案 1 :(得分:17)
使用guard子句防止异常或捕获异常是否更好?
如果索引超出范围的“愚蠢”例外,则始终为前者。
在“外生”例外的情况下,总是后者。
两种方法的正反两用?
在骨头异常的情况下,后者只有缺点。他们是:
最后,你应该阅读我关于这个主题的文章。
答案 2 :(得分:4)
Guard子句。您永远不想将try
/ catch
用于控制流程。捕获异常是昂贵的,应尽可能避免。
答案 3 :(得分:3)
如果可以防止异常,请阻止它。总是
捕获和处理异常是昂贵的,不应该用于正常的控制流程。守卫很便宜。