おふくろさまより愛をこめて

mmmpa ふとしです。誠実なプログラミングを心がけたい。

エラーをエラーとして扱う

エラーをエラーとして扱う

発端となるエラーがあって、それ単体で大事故になることはない。そのエラーに気づかない、あるいは復旧できない、あるいはまちがった復旧により致命的なエラーとなる場合がある。そこで起こりうるエラーに対してどうしておくのがいいかというと

  • エラーをエラーとして認識できる
  • エラーを観察できる
  • エラーからのリカバー動作をそうであると認識できる
    • リカバー動作は通常動作のルールでは異常動作に見えることがあり、それがリカバー動作であると認識していない人間により妨げられてしまう可能性がある

みたいな感じ。想定外のエラーは観察するしかないので、実装上でよくわからないからといって握りつぶしてはいけない。観察もできなくなり、異常事態の結果だけが残って調査もできなくなる。

なにをやるにもまずエラーが起こった時どうなるのかを把握しておく必要がある。これがこうなったらエラーという発見がまずあり、そのエラーが引き起こす事故のダメージを予見する。

というかリカバーは必要ないのでは

「硬い結合 (ひとつの出来事がすぐ次の出来事につながる)」部分に注意する。リカバーは硬い結合を事故を連鎖させず継続するためのものだが、リカバーでより誤った状態が発生し大事故となる可能性は多分にある。

エラーが起こったときにそこからの連鎖反応的な事故を回避できるようするのが肝要である。物理機械とはちがってプログラミングでは「早く失敗する」ことによる中断が可能なので、リカバーよりも中断が強い。