特に言語に指定があるわけではありませんが, try-catchでエラーが発生した際、エラーをログとして保存したいとします(下コードのWriteExceptionToLogFile部)。

try
{
    // 例外が発生するソース
}
catch(Exception exception) 
{
    // エラーをログファイルに書き込み
    WriteExceptionToLogFile(exception);
    // エラーを表示
    DisplayErrorMessageBox("エラーが発生しました!");
}

今までは上コードのようにしてましたが、もしWriteExceptionToLogFileがエラーを発生させるなどした際の考慮をすると問題が二つあることに気づきました。

  • WriteExceptionToLogFileがエラーを発生させると、そこでプログラムが止まる
  • WriteExceptionToLogFile自身のエラーを知ることができないうえにWriteExceptionToLogFileにより書き込まれるはずだった例外もわからなくなる

catch節で実行中のロガーがエラーで停止した際の対処方法として、上ふたつの問題を解決できる方法はありますか?それとも、そもそもロガーがエラーを発生しないことを暗黙の了解にしてしまうのでしょうか?