gpt4 book ai didi

c++ - std::logic_error 而不是返回 false

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:31 25 4
gpt4 key购买 nike

我正在寻找某人对 std::logic_error 用法的意见,而不是使用复杂的嵌套 if/elseif 列表返回 true/false。

我想从很多类似的函数中移动,如下面的函数

bool validate_data(){
std::vector<int> v;
//fill with data
if( v.find(10) == v.end() ){
return false;
}
// other checks that return false
}

bool validate_data(){
std::vector<int> v;
//fill with data
if( v.find(10) == v.end() ){
throw std::logic_error("error message");
}
// other checks that return false
}

并在单个 try-catch block 中调用所有这些函数。

因为它是从 std::exception 派生的,可能我不知道这是否是个好主意。

有人像下面的例子那样使用吗?

非常感谢

AFG

最佳答案

您应该只在特殊情况下使用异常(exception)。当返回值为真或为假的可能性非常大时,使用(和检查)返回值的效率要高得多。只有当抛出的机会小到超过返回值检查的成本时,异常才会更有效。

因此,如果无效数据的可能性非常非常低,则使用异常(exception)。否则,当前的解决方案不仅应该很好,而且效率也稍微高一些(因为抛出和处理相对昂贵)。

关于c++ - std::logic_error 而不是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10600983/

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