我有一个看起来像这样的循环:
for (int i = 0; i < max; i++) {
String myString = ...;
float myNum = Float.parseFloat(myString);
myFloats[i] = myNum;
}
这是一个方法的主要内容,其唯一目的是返回 float 组。如果出现错误,我希望此方法返回 null
,因此我将循环放在 try...catch
block 中,如下所示:
try {
for (int i = 0; i < max; i++) {
String myString = ...;
float myNum = Float.parseFloat(myString);
myFloats[i] = myNum;
}
} catch (NumberFormatException ex) {
return null;
}
但后来我也想到了将 try...catch
block 放入循环中,如下所示:
for (int i = 0; i < max; i++) {
String myString = ...;
try {
float myNum = Float.parseFloat(myString);
} catch (NumberFormatException ex) {
return null;
}
myFloats[i] = myNum;
}
是否有任何理由(性能或其他方面)偏爱一个而不是另一个?
编辑: 共识似乎是将循环放在 try/catch 中更简洁,可能放在它自己的方法中。但是,仍然存在关于哪个更快的争论。有人可以对此进行测试并给出统一的答案吗?
最佳答案
性能:
try/catch 结构的放置位置绝对没有性能差异。在内部,它们被实现为结构中的代码范围表,该结构在调用方法时创建。当方法执行时,try/catch 结构完全不存在,除非发生 throw,然后将错误的位置与表进行比较。
这是一个引用:http://www.javaworld.com/javaworld/jw-01-1997/jw-01-hood.html
table 被描述到一半。
关于java - 应该尝试...catch 进入循环内部还是外部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/141560/