C ++错误消息输出格式

时间:2010-04-01 08:18:50

标签: c++ design-patterns

如果我想在我的解释器中触发错误,我可以调用此函数:

Error( ErrorType type, ErrorSeverity severity, const char* msg, int line );

但是,我只能输出

Name error: Undefined variable in line 1

而不是

Name error: Undefined variable 'someVariableName' in line 1

我完全使用字符串(除了错误信息,因为它们目前都是不变的),所以sprintf将不起作用。

  • 创建一个有效的错误函数的最佳方法是什么,它可以输出一个常量消息,并结合一个描述哪个对象的字符串,例如:一个不存在的变量,触发了错误?

2 个答案:

答案 0 :(得分:4)

这是C ++,因此您可以使用额外的参数重载您的函数以提供变量名称。然后我会使用std :: stringstream来格式化消息。报告错误时无需担心“效率”,因为它们应该很少见,并且不会影响应用程序的整体性能。

答案 1 :(得分:0)

在构建消息的错误函数上使用宏分支。

示例:

#define ERROR(var, msg) error(0, 1, #var " -> " msg, __LINE__)
#define WARNING(var, msg) error(0, 2, #var " -> " msg, __LINE__)