c++ - C++ 在函数中抛出异常并在调用者中捕获它?
问题描述
我有一个返回“向量”的函数。但是,有时在运行时函数可能会遇到错误,它不应该返回向量,而是返回一个可以由调用者检查的值。我应该通过抛出异常并在调用者中捕获它来处理这个问题,还是应该将函数的返回类型更改为存储返回值(0 或 1)和向量的“std::pair”。如果条件发生,我不想以 'std::runtime' 错误退出程序。
std::vector<int> function() {
std::vector ans;
//do stuff
if (something happens)
return -1;
return ans;
}
解决方案
这听起来像是例外的好时机。制作一个可以具有构造函数参数的可抛出类型,某种解释问题的代码。捕手可以检查该代码。
人们会建议std::variant
等等,但这很快就会变得混乱并导致您的函数签名膨胀。它还使调用点的代码复杂化。这里没有必要。异常是为这个用例设计的。
推荐阅读
- python - 尝试将 csv 文件读入笔记本时出现 ParserError
- r - 如何在轴下使用比例和堆叠表进行多标准绘图?
- java - Spring MVC,为什么会出现 404 错误?
- python - selenium.common.exceptions.ElementClickInterceptedException:消息:元素点击被拦截:
- python - 在python中将数据插入oracle数据库
- apache-kafka - JMX 导出器和 Prometheus
- laravel - 如何从 laravel 中的相关表中获取数据
- control-m - 如果执行时间少于 2 分钟,则终止作业
- python - 具有高级字符的非贪婪模式
- javascript - Firefox 在 iframe 中附加时删除 Web 组件属性