「エラー安全性」のすすめ

プログラミング言語 C++ に例外処理機構が盛り込まれてから長い時間をかけて、主に C++ プログラマの中では「例外安全性」という言葉が広く普及してきました。しかし、その性質や概念の本質的な部分は C++ やその例外処理機構に限ってのものではありません。

たとえば、例外安全性についての重要な概念のひとつに「強い例外安全性保証」というものがあります。これは、ある処理を試みた結果、その処理が例外によって中断された場合、プログラムの状態が処理を試みる前と同じに保たれているということの保証です。この保証があれば、プログラムは定義済みの状態に保たれ、例外を通知された側は安全にプログラムの実行(リトライなどのエラー処理含む)を継続できます。

ここで「例外によって中断された場合」を「処理が完了せず失敗した場合」と、より広い意味に置き換えても、それ以外の概念や得られる利点は変わらず有効です。強い例外安全性保証を提供する C++ の処理と同様の性質は、それが( C++ 以前も含めて)どんな言語で記述されているかによらず、重要な情報を扱う処理には自然と望まれるものです。

たとえば銀行口座間の振込み中に何か問題が起こって処理が完了できなかった場合に、片方の口座での出金あるいは入金だけが行われた状態になるようでは困ります。この例はさらに、こういった性質が望まれるのはソフトウェアによる処理に限ったことでもないということを示していると言えます。

つまり例外安全性の本質は特定のプログラミング言語機能としての例外とは直接関係ないものだということです。このため、例外安全性(例外安全)として知られた概念の多くは、より一般的に「エラー安全性」(「エラー安全」)として再認識されるべきです。

ねがわくば、この呼び名の置き換えをもって、より多くの人(主にソフトウェア開発者)がこの重要な概念に触れ、そして実際に役立てられますように。


Copyright © 2010 里田 和敏 (k_satoda@f2.dion.ne.jp)