gpt4 book ai didi

Java if 与 try/catch 开销

转载 作者:IT老高 更新时间:2023-10-28 20:27:54 24 4
gpt4 key购买 nike

在 Java 中使用 try/catch block 而不是 if block 是否有任何开销(假设封闭的代码不这样做)?

例如,以下两个简单的字符串“安全修剪”方法的实现:

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() 是否是一种好的编程模式简化代码布局的方法,尤其是当许多 if block 检查罕见的错误条件可以通过将代码包含在一个 try/catch block 中来避免?

例如,具有 N parameters 的方法是常见的情况。 , 它使用 M <= N它们中的一部分接近其开始时,如果任何此类参数“无效”(例如,null 或空字符串),则会快速且确定性地失败,而不会影响其余代码。

在这种情况下,不必写 k * M if blocks(其中 k 是每个参数的平均检查次数,例如 k = 2 用于 null 或空字符串),try/catch block 会显着缩短代码和 1-2 行注释可用于明确指出“非常规”逻辑。

这样的模式也会加速方法,尤其是在错误情况很少发生的情况下,并且它会在不损害程序安全性的情况下这样做(假设错误情况是“正常的”,例如在字符串处理方法中 null或空值是可以接受的,尽管很少出现)。

最佳答案

我知道你问的是性能开销,但你真的不应该交替使用 try/catchif

try/catch 适用于您无法控制且不在正常程序流程中的错误。例如,尝试写入文件并且文件系统已满?这种情况通常应该使用 try/catch 来处理。

if 语句应该是正常的流程和普通的错误检查。那么,例如,用户未能填充必需的输入字段?为此使用 if,而不是 try/catch

在我看来,您的示例代码强烈建议正确的方法是使用 if 语句而不是 try/catch

为了回答您的问题,我推测 try/catch 的开销通常比 if 更多。要确定,请获取 Java 分析器并找出您关心的特定代码。答案可能会因情况而异。

关于Java if 与 try/catch 开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8621762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com