2006-04-24
返却値、または引数として参照渡し(ポインタでもよい)変数を使って、例外の要因コードを呼び出し元に返す方法は、C言語では最も一般的です。仮に例外処理を使う場合でも、高速に処理する必要がある場合や、割と普通に発生する事象に対応するには、やはりこの方法を用いる
ことになると思います。
ところが、この方法にもいくつかの弱点があります。ざっと列挙してみると、
- コンストラクタや多重定義された演算子では返却値を返せない
- 多重定義された演算子では、要因コードの格納先を引数として渡すこともできない
- 要因コードの判定を真面目に行うと、入れ子が深くなったり、本来の処理と例外処理が混在して、可読性が下がる。
- プログラマが要因コードを無視しがちである。
大体こんなところかと思います。
強引な方法を使えば、(コンパイル時ではなく)実行時に返却値を無視したことを検出することはできると思います(クラスを値で返し、何も操作しなければデストラクタでアボートさせるなど)が、あまり有効な方法ではありません。やはり、要因コードを返す方法には、どうしても限界があるようです。
Comment