我希望得到有关使用std::logic_error
替代复杂的嵌套if/else if返回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
}
to
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
块中调用所有这些函数列表。
由于它是从std::exception
派生而来,我不知道这是否是一个好主意。
有人使用像下面的例子吗?
非常感谢
AFG
throw
而不是return
,你将拥有相同复杂的if/elseif代码。这样做有什么优势? - Tadeusz Kopec for Ukraine