应该尝试…内部或外部循环?

问题:

我有一个循环看起来像这样:

for (int i = 0; i < max; i++) { String myString = ...; float myNum = Float.parseFloat(myString); myFloats[i] = myNum; } [/code] 这是唯一目的是返回浮动数组的方法的主要内容。我想要这个方法返回null如果有一个错误,所以我把循环放在一个try...catch块,像这样:

try {
for (int i = 0; i < max; i++) { String myString = ...; float myNum = Float.parseFloat(myString); myFloats[i] = myNum; } } catch (NumberFormatException ex) { return null; } [/code] 但是,我也想到将try…catch块放在循环中,就像这样:

for (int i = 0; i < max; i++) { String myString = ...; try { float myNum = Float.parseFloat(myString); } catch (NumberFormatException ex) { return null; } myFloats[i] = myNum; } [/code] 有什么理由,表现还是其他的,比较喜欢一个?  编辑:这个共识似乎是将循环放在try / catch内部,这可能在自己的方法之内。然而,仍然有争议是哪个更快。有人可以测试一下,回来一个统一的答案吗?

回答:

性能:
在try / catch结构放置的地方绝对没有性能差异。在内部,它们被实现为在调用该方法时创建的结构中的代码范围表。当该方法正在执行时,try / catch结构完全不在图片之外,除非发生了一个抛出,然后将该错误的位置与该表进行比较。
这里有一个参考:http://www.javaworld.com/javaworld/jw-01-1997/jw-01-hood.html
该表描述了中途。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Should try…catch go inside or outside a loop?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

6 + 1 =