首页 > 解决方案 > C++ 在函数中抛出异常并在调用者中捕获它?

问题描述

我有一个返回“向量”的函数。但是,有时在运行时函数可能会遇到错误,它不应该返回向量,而是返回一个可以由调用者检查的值。我应该通过抛出异常并在调用者中捕获它来处理这个问题,还是应该将函数的返回类型更改为存储返回值(0 或 1)和向量的“std::pair”。如果条件发生,我不想以 'std::runtime' 错误退出程序。

std::vector<int> function() {

std::vector ans;
//do stuff

if (something happens)
    return -1;

return ans;

}  

标签: c++exception

解决方案


这听起来像是例外的好时机。制作一个可以具有构造函数参数的可抛出类型,某种解释问题的代码。捕手可以检查该代码。

人们会建议std::variant等等,但这很快就会变得混乱并导致您的函数签名膨胀。它还使调用点的代码复杂化。这里没有必要。异常是为这个用例设计的。


推荐阅读