错误处理回调
错误处理
当运行时遇到无法恢复的错误时,它会调用内部函数 mco_stop()
。
如果已通过调用 mco_error_set_handler()
注册了错误处理程序,mco_stop()
将依次调用应用程序的错误处理函数,该函数必须具有以下特点:
typedef void(*mco_error_handler_f)(
MCO_RET errcode // 参数errcode是致命错误的代码
);
以下是一个错误处理程序实现的示例:
static void errhandler( int n )
{
printf( "\nSmartEDB fatal error: %d", n );
getchar();
exit( -1 );
}
错误处理拓展
如果已通过调用 mco_error_set_handler_ex()
注册了错误处理程序,mco_stop()
将转而调用应用程序的扩展错误处理程序函数,该函数必须具有以下特点:
typedef void(*mco_error_handler_f_ex)(
MCO_RET errcode, // 致命错误的代码
const char* file, // 源文件的名称
int line // 源文件中的行号
);
以下是一个错误处理扩展程序实现的示例:
static void extended_errhandler(MCO_RET errcode, const char* file, int line)
{
printf("\n SmartEDB fatal error: %d on line %d of file %s", errcode, line, file);
getchar();
exit( -1 );
}