言語仕様の詳細(JISとの相違)

12 例外状態処理及びデバッグ

[規格との相違]
12.1.4
 when本体内部で起きた例外状態は,すべて続行不能例外として扱われる。これは,12.1.4.(4)(d)に規定されるEXIT HANDLERを実行したときに意味を持つ。
12.1.4(3)
 行番号が存在しないときのexline関数の値は0とする。
12.1.4(4)
 when-in区に属する例外処理区で,when-in区を囲むdo区,for区から抜けることを意味するexit-do文,exit-for文を実行すると,例外処理区から出ることになる。(規格には,これらの文の効果についての記述が欠けている。)
12.1.4.(4)(d)
 “その例外状態の行を含む最も内側の保護区”を,現在,例外処理を実行中の保護区(現在実行中の例外処理区を呼び出した保護区)と解釈する。
12.1.4(6)
 「例外処理区」と書かれた部分は「Handler区」であると解釈する。(そう解釈しないと,8.2.4(3)の記述との整合性が失われる。)
12.1.4(8)
 例外処理区の内部で新たに起きた続行可能例外には,この規定を適用しない。
12.1.4(9.1)
 handler区で続行不能例外が発生すると,ただちにプログラム単位の外側に例外が伝達される。
12.1.6(9)
 def文で例外状態が起きた場合は,12.1.4(9)の規定に従う。(JISの記述は誤りと思われる)
12.2.4(6)
 trace文の実行結果は,若干,規格と食い違う点がある。
 特に,代入文を実行しても変数値が変化しなければ報告しない。
12.2.6(1)
 値が変化した配列要素のみ報告する。