ССАГПЗ (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
отобразит соответствующее сообщение об ошибке, связанной с егто.
В моем приложении, который будет вызывать эту функцию у меня есть это:
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, чтобы закончить приложение или сделать что-то еще.
Другая мысль, лучше вернуть индикатор ошибки и позволить вызывающей функции отображать источник ошибки?