1.需要开启对ESP-IDF 中的 C++ 异常的支持。
默认情况下禁用对 ESP-IDF 中的 C++ 异常的支持,但可以使用 CONFIG_CXX_EXCEPTIONS 选项启用.
如果禁用对 ESP-IDF中的 C++ 异常的支持这样编译例程会报错:
error: exception handling disabled, use -fexceptions to enable
throw TargetSpaceNullException();
在config中开启对ESP-IDF 中的 C++ 异常的支持:
修改后:
我的例程:
#include <stdio.h>
class BaseMyException
{
public:
virtual void what() = 0;
virtual ~BaseMyException(){};
};
class TargetSpaceNullException : public BaseMyException
{
public:
virtual void what()
{
printf(“目标空间为空\n”);
}
virtual ~TargetSpaceNullException(){};
};
class SourceSpaceNullException : public BaseMyException
{
public:
virtual void what()
{
printf(“源空间为空\n”);
}
virtual ~SourceSpaceNullException(){};
};
void copyString(char *target, char source)
{
if (target == NULL)
{
/ code /
// printf(“target数组为空”);
throw TargetSpaceNullException();
}
if (source == NULL)
{
/ code */
// printf(“source数组为空”);
throw SourceSpaceNullException();
}
// if(sizeof(source) != '\n')
while (*source != '\0')
{
/* code */
*target = *source;
target++;
source++;
}
}
extern “C” void app_main(void)
{
char *sourceStr = “abcde\n”;
printf(sourceStr);
char targetStr[10] = {0};
try
{
copyString(targetStr, NULL);
}
catch (BaseMyException& ex){
ex.what();
};
printf(targetStr);
}
运行结果: