You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:08:09