c++ - 如何使用参数抛出错误消息?
问题描述
我真的很难抛出包含函数参数的错误消息。我知道我可以做到:
throw std::out_of_range("Empty tree");
我正在努力解决的是我应该抛出的另一个错误,即:
"Cannot find ceil for key <key>"
如您所见,我应该包含无法找到 ceil 的密钥。我在抛出异常的函数中有键作为变量,但我不知道如何将它包含在最终将由 e.what() 打印的内容中。
编辑:这是作为类成员的模板函数,因此 key 现在只需键入 T 。因此,为什么我认为将其格式化为交流字符串不起作用。
解决方案
标准异常只接受一个字符串作为参数:
例如out_of_range,请参阅apache.org 文档
namespace std {
class out_of_range : public logic_error {
public:
explicit out_of_range(const string& what_arg);
};
}
您可以使用任何方法预先构建字符串,然后将其作为参数传递给异常。
示例:
#include <string>
#include <sstream>
#include <stdexcept>
std::ostringstream oss;
oss << "Cannot find ceil for key " << key;
std::string errorString = oss.str();
throw std::out_of_range(errorString);
有关创建字符串的其他方法,请参阅 C++ 创建文本和变量字符串
推荐阅读
- oauth-2.0 - 存储在数据库中的 Json Web 令牌和验证
- angular - 使用 Msal 对 Angular 中的 Azure 广告进行身份验证
- python - 无缓冲的python覆盖率
- javascript - 如何在javascript中更改音频文件编解码器
- c - 一个动画处理图标,纯C
- python - 使用 Kmeans 聚类压缩多个图像
- django - 我使用 distinct() 对吗?
- object - Python vs VBS COM 对象处理
- python - 在不同的数据框中搜索匹配,然后将列重命名为匹配
- oracle - Oracle 数据库的 TO_TIMESTAMP 函数