在Java语言中,使用try/catch块,而不是使用if块(假设附带的代码没有这样的要求),会有任何开销吗?
例如,以以下两个简单的字符串"safe trim“方法实现为例:
public String tryTrim(String raw) {
try {
return raw.trim();
} catch (Exception e) {
}
return null;
}
public String ifTrim(String raw) {
if (raw == null) {
return null;
}
return raw.trim();
}
如果raw
输入只有很少的null
,那么这两种方法之间是否存在性能差异?
此外,使用tryTrim()
方法来简化代码布局是一种很好的编程模式吗?尤其是当可以通过将代码封装在一个/catch块中来避免许多if块检查罕见错误的情况时。
例如,常见的情况是使用N parameters
的方法,该方法在开始时使用M <= N
,如果任何这样的参数“无效”(例如,null或空字符串),则会迅速且确定地失败,而不会影响代码的其余部分。
在这种情况下,不必编写k * M
if块(其中k
是每个参数的平均检查次数,例如空字符串或空字符串的k = 2
),try/catch块将显著缩短代码,并且可以使用1-2行注释来显式地记录“非传统”逻辑。
这样的模式还将加速该方法,特别是当错误条件很少出现时,并且它将在不损害程序安全性的情况下这样做(假设错误条件是“正常的”,例如在字符串处理方法中,其中null或空值是可接受的,尽管很少出现)。
https://stackoverflow.com/questions/8621762
复制相似问题