Throw

Throw[value]

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

Throw[value,tag]

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

Throw[value,tag,f]

適切なCatchが見付からなければ,f[value,tag]をトップレベルの値として返す.

詳細

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

例題

すべて開くすべて閉じる

  (3)

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

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

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

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

スコープ  (4)

Throwは基本的にどのような関数の内側でも使うことができる:

Throwを使って任意の形の式を投げる:

Throwは最も近くにあってこれを囲み込んでいるCatchによってキャッチされる:

最初のThrowが評価され次第,これを囲み込んでいるCatchに退避する:

一般化と拡張  (3)

タグuが付いたThrowをキャッチする:

内側のCatchThrowをキャッチする:

外側のCatchThrowをキャッチする:

タグを局所的にしておく:

アプリケーション  (3)

1010より後で最初の素数を求める:

19を法とした1と等価になる17の最初のベキを求める:

反復が大きくなり過ぎる場合は停止する:

特性と関係  (1)

メッセージが生成された場合はCheckを使って例外を投げる(実行する):

考えられる問題  (2)

ThrowにはCatchが必要である:

Throwを使うと関数が返すものの構造に影響が出ることがある:

Wolfram Research (1988), Throw, Wolfram言語関数, https://reference.wolfram.com/language/ref/Throw.html (2020年に更新).

テキスト

Wolfram Research (1988), Throw, Wolfram言語関数, https://reference.wolfram.com/language/ref/Throw.html (2020年に更新).

CMS

Wolfram Language. 1988. "Throw." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/Throw.html.

APA

Wolfram Language. (1988). Throw. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Throw.html

BibTeX

@misc{reference.wolfram_2024_throw, author="Wolfram Research", title="{Throw}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/Throw.html}", note=[Accessed: 24-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_throw, organization={Wolfram Research}, title={Throw}, year={2020}, url={https://reference.wolfram.com/language/ref/Throw.html}, note=[Accessed: 24-November-2024 ]}