gcc (GCC) 4.7.2 c89
呼び出された関数からエラー メッセージを返すときのベスト プラクティスは何ですか?
私が作成している共有ライブラリの1つに、次の機能があります。
/* 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 を返してアプリケーションを終了するか、何か他のことをします。
別の考えとして、エラー インジケーターを返し、呼び出し元の関数にエラーの原因を表示させる方がよいでしょうか?