Abr*_*ile 5 c++ validation exception-handling
我正在寻找某人对使用的看法,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
}
Run Code Online (Sandbox Code Playgroud)
至
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
}
Run Code Online (Sandbox Code Playgroud)
并在一个try-catch块中调用所有这些函数列表.
既然它来自std::exception可能我不知道它是不是一个好主意.
是否有人使用如下例子?
非常感谢
AFG
仅在特殊情况下使用例外.
是不是发现价值10是一种特殊情况?还是只是一个正常的情况?
将您的方法从validate_data重命名为is_data_valid使其更清晰.如果方法返回true,则它是有效的.如果它返回false,则不是.不需要为此使用例外.
您应该仅在特殊情况下使用例外.当真实或错误的可能性非常重要时,使用(和检查)返回值会更有效.只有当投掷的机会太小而不能超过返回值检查的成本时,例外才会更有效.
因此,如果无效数据的可能性非常低,那么请使用例外.否则,当前的解决方案不仅应该是好的,而且还应该稍微更高效(因为投掷和处理相对昂贵).
| 归档时间: |
|
| 查看次数: |
8675 次 |
| 最近记录: |