Я искал мнение об использовании std::logic_error
вместо использования сложного списка вложенных if/elseif return true/false.std :: logic_error вместо return 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
блоке.
Поскольку это производное от std::exception
, вероятно, я не знаю, хорошая ли это идея.
Кто-нибудь может использовать пример ниже?
Большое спасибо
AFG
У вас будет такой же сложный код if/elseif с 'throw' вместо' return'. В чем преимущество? –
@Tadeusz: поскольку все происходит в одном отказе проверки, я могу написать менее сложный код, т. Е. Просто список вызовов этих функций проверки в одном предложении try/catch. –