Java if vs.try / catch开销
有没有在Java中的任何开销使用 块,而不是一个 (假设封闭的代码,否则不要求的话)?
例如,对字符串采用“安全调整”方法的以下两个简单实现:
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()
,特别是当许多 可以通过将代码封装在一个try /
catch块中来避免检查罕见错误情况的块时?
例如,N parameters
使用M <=
N的方法很常见,该方法在开始时就使用,如果任何这样的参数为“无效”(例如,空字符串或空字符串),都会快速确定性地失败,而不会影响其余的码。
在这种情况下, (k
每个参数的平均检查次数在哪里,例如,k =
2对于空字符串或空字符串),而是可以大大缩短代码,而可以使用1-2行注释明确指出“非常规”逻辑。 *
这样的模式还可以加快方法的速度,尤其是在错误情况很少发生的情况下,并且这样做不会损害程序安全性(假设错误情况是“正常的”,例如,在字符串处理方法中值为空或空值的情况下)是可以接受的,尽管很少在场)。
回答:
我知道您在询问性能开销,但您实际上不应该使用try
/ catch
和if
可互换使用。
try
/ catch
是针对超出您的控制范围而不是正常程序流中的错误事件。例如,尝试写入文件并且文件系统已满?这种情况通常应使用try
/
处理catch
。
if
语句应该是正常流程和普通错误检查。因此,例如,用户无法填充必填字段?使用if
该,不try
/ catch
。
在我看来,您的示例代码强烈建议正确的方法是使用if
语句而不是try
/ catch
。
要回答您的问题,我想想try
/中的开销通常catch
比/中的开销大if
。要肯定知道,请获取Java
Profiler并查找所需的特定代码。答案可能会根据情况而有所不同。
以上是 Java if vs.try / catch开销 的全部内容, 来源链接: utcz.com/qa/398824.html