gpt4 book ai didi

java - 异常流控在某些场景下是不是更好?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:22:22 24 4
gpt4 key购买 nike

有很多文章解释了为什么应该避免异常流控制并将其视为反模式。但是,在以下示例中使用异常流控制是否有意义?

例如:我有一个包含许多值的枚举类型,需要检查它是否包含给定的字符串。

使用 Enum.valueof 的解决方案应抛出 IllegalArgumentException 并可用于返回 false。甚至 Apache commons lang3 lib 也使用相同的。我们在所有后续调用中重复使用一次惰性初始化的 enumConstantDirectory 映射。

return EnumUtils.isValidEnum(MyEnum.class, myValue);

其他解决方案是迭代。

return Stream.of(MyEnum.values()).anyMatch(e -> e.name().equals(value));

最佳答案

编程始终是在“非正式标准”和偏离有意义的规则之间取得平衡。

是的,Java 是您“三思而后行”(检查条件)的语言之一;不像 Python 那样“请求原谅”(不是请求许可)。

换句话说:大多数时候,Java 程序员看到使用异常控制流的代码时会感到惊讶。但是:这并不意味着一个人从不 应该以这种方式工作。

我个人的两分钱:我认为当这种情况表明您的程序中存在真正的异常情况时,您应该依赖异常。意思是:当你检查的那些字符串应该代表枚举常量时......而不是异常可能没问题。但是当在运行时有一定的机会(甚至可能是“有效”原因)字符串无效时,我宁愿使用一个方法,该方法执行 boolean isValid() 并且不抛出异常。

关于java - 异常流控在某些场景下是不是更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40945057/

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