尝试捕捉或检查长度?

时间:2010-03-18 14:20:34

标签: c# try-catch

我只是想知道哪个更便宜,使用try catch块来索引越界或检查多维数组的长度并比较值?

我感觉这是长度,因为我可以将长度存储在一个变量中然后只做相对便宜的if。我只是不确定try-catch有多贵。

谢谢!

4 个答案:

答案 0 :(得分:20)

与检查整数的值相比,抛出异常是非常昂贵的。但是,那是无关紧要的。更重要的是,即使例外价格便宜,它们仍然是错误的选择。异常的一点是它表示异常出现。理想情况下,例外情况应仅用于表示意外,罕见且最好是致命的事物。

另一种查看方式:如果您正在访问其边界之外的数组,则会出现错误。修复错误。异常处理程序隐藏了错误,它没有修复错误

答案 1 :(得分:11)

检查长度比捕获异常要便宜得多。当你有一个try..catch块时,它会在代码中添加额外的结构来捕获异常 - 这很好,我不是说它是错的,但是如果你可以检查边界的长度,那就改为了。

答案 2 :(得分:2)

抛出异常是一项昂贵的操作(因为您必须生成堆栈跟踪)。去检查长度。

答案 3 :(得分:0)

如果您想知道哪种情况对您的情况更有效,我会说“措施”。

例如:如果越界条件非常罕见怎么办?因此,越界永远不会抛出...在这种情况下,所有额外的“手动”边界检查可能会更慢。

CAVEATS:try / catch需要围绕许多越界检查,因此try的设置不太重要。