タグ

ブックマーク / qiita.com/Kokudori (2)

  • 検査例外再考 - Qiita

    検査例外はJavaで導入された例外に対する興味深い機構です。Javaで導入された当初、検査例外は多くの人々に素晴らしい解決策だと思われました。しかし、最近のメジャーなJVM言語で検査例外をサポートする言語はありません。JVM言語でなくとも、メジャー言語で検査例外をサポートするプログラミング言語は2014年現在1つとして存在しません*1。 何故検査例外は普及しなかったのでしょうか。結論から言えば、Javaの検査例外を用いた例外設計があまりにも難しく、ほとんどの組織にとって設計コストがペイ出来なかったためだと思われます。Javaの検査例外は例外というレイヤーで各々の処理を結びます。この時、別々の抽象度をある単一の例外で結んでしまうと、問題が発生します。つまり、抽象度の異なる処理同士を結びつけるたびに、その差異を吸収する独自例外表現が必要になります。この設計判断は不可能ではないものの、かなり難し

    検査例外再考 - Qiita
    yojik
    yojik 2020/11/13
  • 契約による設計から見た例外 - Qiita

    正しさは相対的な概念である。 Bertrand Meyer [1] Bertrand Meyer氏は「契約による設計」という概念から例外を導出し、例外の必要性をエレガントに説明しています。また、彼の説明に則れば今までの議論と比べて例外をいくぶんか形式的に扱えるようになります。契約による設計を学ぶ前に、プログラムの正しさについてもう一度考えてみましょう。 プログラムの正しさ あるプログラムが正しいかどうかを判定するにはどのようにすれば良いでしょうか。最も簡単な方法は、あるプログラムの正しさを形式的に定義する事です。より直接的に言えば、あるプログラムの正しさを簡単な論理式で表現します。その論理式が真ならばそのプログラムは正しい。偽ならばそのプログラムは正しくありません。 これだけだと関数の戻り値を検査すれば良いだけのようにも聞こえます。しかし、そう簡単な話ではありません。純粋でない言語の場合、

    契約による設計から見た例外 - Qiita
    yojik
    yojik 2014/12/05
  • 1