在C++中,如何选择抛出异常还是返回错误码?
C++ 返回码 vs 异常处理的选择疑问
我看到以下C++伪代码示例后产生了疑问,已经咨询过一些人士,但仍希望从社区获取更多实际经验与背景信息。
首先是ImageFile类的定义:
class ImageFile : File { vector<char> contents; public: int write(const vector<char> v) { if (v contains something other than a, b, or c) { return ReturnValues::INVAID_INPUT; } this->contents = move(v); return ReturnValues::SUCCESS; } };
然后是调用write的代码:
ImageFile img_file{"name_of_image_file"}; vector<char> v{'a', 'b', 'c', '99'}; img_file.write(v);
按照这种写法,write()会静默失败,所以合理的使用方式应该是接收返回值并做判断:
int return_value = img_file.write(v); if (return_value != SUCCESS) { // Do something }
我现在好奇:如果不使用返回码,而是改为抛出异常会怎么样?这样write()执行失败时,异常会向上传递到main(),至少能消除静默失败的风险。
我的一位教授提到,返回码是C++中的常用做法,只要遵循项目规范即可,但我想听听大家在实际开发中的经验和看法。
内容的提问来源于stack exchange,提问作者TKMitsu
相关产品推荐
相关产品推荐

