gcc (GCC) 4.7.2 c89
我一直想知道从被调用函数返回错误消息时的最佳实践是什么?
在我正在创建的一个共享库中,我有这个功能:
/* Create directory structure */
apr_status_t dir_create(apr_pool_t *mem_pool)
{
#define SRC "test_src"
apr_fileperms_t file_perms =
APR_FPROT_UWRITE |
APR_FPROT_GWRITE |
APR_FPROT_WWRITE |
APR_FPROT_UREAD |
APR_FPROT_GREAD |
APR_FPROT_WREAD |
APR_FPROT_UEXECUTE |
APR_FPROT_GEXECUTE;
if(apr_dir_make(SRC, file_perms, mem_pool) != APR_SUCCESS) {
LOG_CRIT("Failed to create directory");
return FALSE;
}
return TRUE;
}
将LOG_CRIT
显示与 errno 相关的相应错误消息。
在我将调用此函数的应用程序中,我有这个:
if(dir_create(mem_pool) != TRUE) {
return 1;
}
LOG_INFO("Directory has been created");
例如,当上述失败时,它将像这样记录:
[CRITICAL] dir_create:28: error [File exists] Failed to create directory
我想知道我是否应该将错误消息放在调用库函数的应用程序中。或者您是否应该始终在最早收到错误消息时立即显示它?
在上述情况下,我在被调用函数中显示错误消息。当函数返回时,我只返回 1 以结束应用程序或执行其他操作。
另一个想法,最好返回错误指示器,让调用函数显示错误的来源?