我只是想知道哪个更便宜,使用try catch块来索引越界或检查多维数组的长度并比较值?
我感觉这是长度,因为我可以将长度存储在一个变量中然后只做相对便宜的if。我只是不确定try-catch有多贵。
谢谢!
答案 0 :(得分:20)
与检查整数的值相比,抛出异常是非常昂贵的。但是,那是无关紧要的。更重要的是,即使例外价格便宜,它们仍然是错误的选择。异常的一点是它表示异常出现。理想情况下,例外情况应仅用于表示意外,罕见且最好是致命的事物。
另一种查看方式:如果您正在访问其边界之外的数组,则会出现错误。修复错误。异常处理程序隐藏了错误,它没有修复错误。
答案 1 :(得分:11)
检查长度比捕获异常要便宜得多。当你有一个try..catch块时,它会在代码中添加额外的结构来捕获异常 - 这很好,我不是说它是错的,但是如果你可以检查边界的长度,那就改为了。
答案 2 :(得分:2)
抛出异常是一项昂贵的操作(因为您必须生成堆栈跟踪)。去检查长度。
答案 3 :(得分:0)
如果您想知道哪种情况对您的情况更有效,我会说“措施”。
例如:如果越界条件非常罕见怎么办?因此,越界永远不会抛出...在这种情况下,所有额外的“手动”边界检查可能会更慢。
CAVEATS:try / catch需要围绕许多越界检查,因此try的设置不太重要。