Throw

Throw[value]
評価を中止し,この関数に対して適用された最も近くにあるCatchの値として value を返す.

Throw[value,tag]
Catch[expr,form]だけによりキャッチできる.tagform にマッチする.

詳細詳細

  • ThrowおよびCatchを使うことでNestFoldFixedPoint,そしてScan等の関数から退避することが可能になる.
  • tag にはどのような式でも指定できる.
  • Throw[value,tag]における tag は,Catch[expr,form]form と比較されるときに毎回再評価を受ける.
  • ThrowをキャッチするためのCatchが何も指定されていないとき,エラーになり,Throwは未評価のまま返される.

例題例題すべて開くすべて閉じる

  (3)  (3)

Throwが評価されると直ちに囲み込んでいるCatchに退避する:

In[1]:=
Click for copyable input
Out[1]=

「例外処理を実行する」ことができる関数を定義する:

In[1]:=
Click for copyable input

Catchの結果はThrowが投げ出した(実行した)ものである:

In[2]:=
Click for copyable input
Out[2]=
In[3]:=
Click for copyable input
Out[3]=

Throwを使って基準を満たしたときにループから退避する:

In[1]:=
Click for copyable input
Out[1]=
1988年に導入
(1.0)
| 1996年に修正
(3.0)