例外状態の伝達 ☆
関数定義や副プログラムを実行中に例外が発生したとき,例外発生行が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を加算した数になる。