带有__PRETTY_UNCTION_的自定义错误处理程序

Custom error handler with __PRETTY_FUNCTION__

本文关键字:错误 处理 程序 自定义 PRETTY UNCTION 带有      更新时间:2023-10-16

我试图构建自己的错误处理程序,根据我在枚举类errorNo{}中实现的一些错误号抛出错误。我还想包含使用__PRETTY_FUNCTION__的源函数。错误处理程序如下(不太复杂的版本…带有std::string…没有来自枚举的errorNo):

void errorHandler(std::string message,int errorCode){
switch(errorCode)}{
默认值:
throw std::runntime_error(message);}}

然后称之为:

errorHandler(std::string("Error in:")+__PRETTY_FUNCTION__,0);

错误处理程序是否有一种方法可以在没有任何显式声明的情况下自动获取调用它的函数名?我试过了:

void errorHandler(std::string message,int errorCode,const char*functionName=__PRETTY_FUNCTION__){

throw std::runntime_error(消息+"in"+functionName)

}

我收到一个警告,__PRETTY_FUNCTION__只允许在函数中使用,即使在我得到输出后,我也会得到"顶级错误"。

您可以将__PRETTY_FUNCTION__存储在该特定函数的std::string中,然后将该字符串传递给errorHandler函数。

类似这样的东西:

void foo()
{
std::string message, funcName;
message = "Error";
funcName = __PRETTY_FUNCTION__;
errorHandler(message, 0 , funcName);
}

请在此处查看现场演示。