如何通过参数抛出错误消息
How to throw an error message with an argument?
我真的很难抛出一条包含函数参数的错误消息。我知道我能做到:
throw std::out_of_range("Empty tree");
我正在努力解决的是我应该抛出的另一个错误,那就是:
"Cannot find ceil for key <key>"
正如你所看到的,我应该包括我找不到ceil的钥匙。在抛出异常的函数中,我将密钥作为变量,但我不知道如何将其包含在e.what((最终打印的内容中。
EDIT:这是一个作为类成员的模板函数,所以键现在只是类型T。因此,我认为将其格式化为c字符串不起作用。
标准异常只将字符串作为参数:
例如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++创建文本和变量字符串
相关文章:
- C++错误消息*成员参考.**初学者*
- 如何通过参数抛出错误消息
- glad 导致 glfwSwapBuffers 返回错误消息
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 重新定义预定义的 errno 错误消息 (E2BIG)
- SDL 映像:无法打开映像,仅显示错误消息
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 错误消息"expected expression"....有人知道它为什么这么说吗?
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- GCC 警告和 gcc 错误消息之间的区别
- 为 c++ cin 上的输入数无效生成错误消息
- 来自带有mbedtls TLS的Mongoose Web服务器的错误消息
- 如何使用realsense摄像头调试ROS错误消息
- C++ 概念 - 需要括号中的概念会导致 2 条冲突的错误消息
- 编译器收到错误消息(textc.exe已停止)
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 使用 c++/WinRT Direct3D UWP Game DR 模板 Direct X11 的错误消息
- max_element() 给出非常奇怪的错误消息
- 不断收到错误消息,并非所有控制路径都返回值