私は自分のOO言語を設計していて、例外を打つまでうまくいっていました。例外はカプセル化を破るようです。カプセル化と例外
たとえば、クラスAにクラスBのオブジェクトがあり、BにCがあり、CにXがあり、Aに例外がスローされた場合、AのコードはXだけでなくBとCも処理する必要がありますそれは正しく。これは、CをDに置き換えた場合、例外のハンドラを変更してコールスタックから関連情報を抽出する必要があるためです。
この問題を回避するには、クラスのAPIの一部として例外を設定して、一度に1つの呼び出し元スタックを呼び出すスタックを伝播させるしかありません。そして彼らは、彼ら自身の言葉で例外を再中断すべきです。
例を示します。トレンドは統計的傾向を分析するためのクラスであり、2つのポイントから1つのラインの傾きを計算する方法、傾きを持っています。
method slope
given
Point 1st
Point 2nd
returns
Number m
except
when infinite slope
m gets
(2nd's y - 1st's y)/(2nd's x - 1st's x)
except
when any divide by zero
declare infinite slope
when overflow of (2nd's y - 1st's y)
declare infinite slope
when overflow of (2nd's x - 1st's x)
instead do m gets 0
when overflow of (2nd's y - 1st's y)/(2nd's x - 1st's x)
declare infinite slope
when any underflow
instead use 0
end of method slope
これを行うより良い方法はありますか?あなたはDとCを交換する場合
私の無知を許しますが、これはどの言語ですか? – dwerner
非常に最初の行:私は自分のオブジェクト指向言語を設計しています... – shawnhcorey