Catch
例題
すべて開く すべて閉じる例 (3)
Throwが評価され次第囲み込んでいるCatchに退避する:
Catch[a;b;Throw[c];d;e]f[x_] := If[x > 10, Throw[overflow], x!]Catchの結果はThrowが投げた(実行した)ものである:
Catch[f[2] + f[11]]Catch[f[2] + f[3]]Throwを使って基準が満たされた場合にループから退避する:
Catch[Do[If[i! > 10 ^ 10, Throw[i]], {i, 100}]]スコープ (5)
Catchは基本的にどんな関数の中からでもThrowをキャッチできる:
Catch[If[# < 0, Throw[#]]& /@ {1, 2, 0, -1, 5, 6}]Catch[{a, Throw[b], c}]Catch[a ^ 2 + b ^ 2 + c ^ 2 /. b :> Throw[bbb]]最も近くで囲み込んでいるCatchがThrowをキャッチする:
Catch[{Catch[{a, Throw[b], c}], d, e}]Catch[{Throw[a], Throw[b], Throw[c]}]Catch[Throw /@ {a, b, c}]f[x_] := (If[x < 0, Throw["negative"]];Sqrt[x])Catch[Sum[f[i], {i, 5, -5, -1}]]f[x_] := Which[
x < 0, Throw[x, error[negative]],
x == 0, Throw[x, error[zero]],
True, 1 / Sqrt[x]]ff[x_] :=
Catch[f[x], error[_], Function[{value, tag}, tag /. {error[negative] :> Indeterminate, error[zero] :> Infinity, _ :> Throw[value, tag]}]]ff /@ {-1, 0, 1}一般化と拡張 (3)
アプリケーション (3)
Catch[Do[If[PrimeQ[i], Throw[i]], {i, 10 ^ 10, 10 ^ 10 + 1000}]]Catch[Do[If[Mod[17 ^ i, 19] == 1, Throw[i]], {i, 19}]]NestList[# ^ 2 + 1&, 2, 6]Catch[NestList[If[# > 1000, Throw[#], # ^ 2 + 1]&, 2, 6]]特性と関係 (1)
メッセージが生成された場合にはCheckを使って例外を投げる(実行する):
Catch[2 + Check[1 / (1 + 1 / 0), Throw[error]]]Catch[2 + Check[1 / (1 + 1 / 2), Throw[error]]]関連項目
テクニカルノート
関連するガイド
-
▪
- フロー制御 ▪
- ループ構文 ▪
- スコープ構文 ▪
- 手続き型プログラミング ▪
- 言語の概要 ▪
- ロバスト性とエラー処理
履歴
1988 で導入 (1.0) | 1996 で更新 (3.0)
テキスト
Wolfram Research (1988), Catch, Wolfram言語関数, https://reference.wolfram.com/language/ref/Catch.html (1996年に更新).
CMS
Wolfram Language. 1988. "Catch." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 1996. https://reference.wolfram.com/language/ref/Catch.html.
APA
Wolfram Language. (1988). Catch. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Catch.html
BibTeX
@misc{reference.wolfram_2026_catch, author="Wolfram Research", title="{Catch}", year="1996", howpublished="\url{https://reference.wolfram.com/language/ref/Catch.html}", note=[Accessed: 12-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_catch, organization={Wolfram Research}, title={Catch}, year={1996}, url={https://reference.wolfram.com/language/ref/Catch.html}, note=[Accessed: 12-August-2026]}