例外が「発生した場合」での例外発生

投稿者:碁盤鮫 投稿日:2020/09/13(Sun) 03:39:16 No.2000

例外監視文の「発生した場合」部分を実行中に、重ねて例外が発生した場合、プログラムの実行が中断されるようです。

ーーーーーーーーーー テストプログラム
「今、例外監視文に入ります。」と報告
例外監視
  1÷0を報告
発生した場合
  「今、<発生した場合>部分に入りました。」と報告
  「(エラーは無でない? [エラーが無でない])」と報告
  {111}(-1)を報告
監視終わり
「今、例外監視文から出ました。」と報告
ーーーーーーーーーーーーーーーーーーーー

ーーーーーーーーーー スミレ畑(Sumire 1.7.1016)での実行結果
今、例外監視文に入ります。
今、<発生した場合>部分に入りました。
(エラーは無でない? ×)
ーーーーーーーーーーーーーーーーーーーー

このような場合、改めて例外が送出される、というのが他の言語での普通の仕様だと思われます。例えば、捕捉した例外を別の種類の例外として送出しなおすといった処理が、実際によくあります。また、「発生した場合」の処理をテスト、デバッグする際に決定的に重要です。

この問題は、私がこれまで例外監視文を使う上で常に不便に思ってきたことなのですが、例外監視文の他の(仕様の明確な)不具合の解決を優先しようとしたため、つい後回しにしてきました。

(なお、テストプログラムで示したとおり、「エラー」特殊変数の値が無になる問題が(スミレ畑で)解決していないことを念のため補足しておきます。)

▲ページの先頭へ

- WebForum -