例外状態の伝達

 関数定義や副プログラムを実行中に例外が発生したとき,例外発生行がwhen本体になければ,例外状態は呼び出し元に伝達される。呼び出し元の文がwhen本体にあれば,そこで例外状態処理が行なえる。このことは,特に,def文実行中に発生する例外に対して重要である。

例 y=1/xのグラフを描く

100 DEF f(x)=1/x
110 SET WINDOW -2,2,-2,2
120 FOR x=-2 TO 2 STEP 0.01
130   WHEN EXCEPTION IN
140      PLOT LINES:x,f(x);
150   USE
160      PLOT LINES
170   END WHEN
180 NEXT x
190 END

解説 x=0のとき140行のplot文を実行すると,x=0で100行のdef文が実行され,零除算例外が発生する。すると,上述の例外状態の伝達が行なわれ,140行で例外状態が発生したのと同じ状態になり,160行が実行されて,実行が継続する。

<補足>例外状態が呼び出し先から伝達されると,extype関数が返す例外状態番号の値が本来の値に100000を加算した数になる。