CheckAbort[expr,failexpr]
expr を評価し,中断された場合には,failexpr を返す.
CheckAbort
CheckAbort[expr,failexpr]
expr を評価し,中断された場合には,failexpr を返す.
詳細とオプション
- デフォルトで,CheckAbortはユーザが開始した任意の中断(Abort[]への呼出しを含む)を中断し,それ以上伝播しない.
- CheckAbortが中断するかどうかはPropagateAbortsオプションで変えられる.このオプションには以下の設定が使える.
-
Automatic ユーザが開始した中断以外の中断を伝播する(Abort[]への呼出しを含む) True すべての中断を伝播する False 中断は伝播しない - CheckAbortのAbortProtect内で動作する. »
- CheckAbortは,属性HoldAllを有する.
例題
すべて開く すべて閉じるスコープ (3)
AbortProtectの中でCheckAbortを使って中断を検出する:
AbortProtect[Abort[];CheckAbort[Echo["no abort"], Echo["yes abort"]];Echo["end of AbortProtect"]]TimeConstrained[AbortProtect[Pause[1];CheckAbort[Echo["no abort"], Echo["yes abort"]];Echo["end of AbortProtect"]], .5, "Timed out"]PropagateAbortsを使って中断を継続するかCheckAbortの後で終了するかを制御する:
AbortProtect[Abort[];CheckAbort[Echo["A1"], Echo["A2"], PropagateAborts -> True];
CheckAbort[Echo["B1"], Echo["B2"], PropagateAborts -> False];CheckAbort[Echo["C1"], Echo["c2"], PropagateAborts -> False];Echo["finished AbortProtect"]]TimeConstrainedの中でCheckAbortを使って制限に達した際にどの部分を飛ばすかを選択する:
TimeConstrained[CheckAbort[Pause[1];Echo["first"], Echo["second"], PropagateAborts -> False];Echo["finished CheckAbort"], .1]これはMemoryConstrainedを使っても行える:
MemoryConstrained[CheckAbort[Range[10 ^ 6];Echo["first"], Echo["second"], PropagateAborts -> False];Echo["finished CheckAbort"], 10 ^ 4]オプション (2)
PropagateAborts (2)
デフォルト設定のAutomaticはユーザが開始した中断をCheckAbortの外には伝播しない:
CheckAbort[Abort[], Echo["check"], PropagateAborts -> Automatic];Echo["past CheckAbort"]PropagateAbortsTrueという設定を使って中断がCheckAbortの外まで続くようにする:
CheckAbort[Abort[], Echo["check"], PropagateAborts -> True];Echo["past CheckAbort"]デフォルトで,TimeConstrainedによって作成された中断は伝播される:
TimeConstrained[
CheckAbort[Pause[1], Echo["check"], PropagateAborts -> Automatic];Echo["past CheckAbort"], .1]PropagateAbortsFalseの設定を使って中断が続かないようにする:
TimeConstrained[
CheckAbort[Pause[1], Echo["check"], PropagateAborts -> False];Echo["past CheckAbort"], .1]MemoryConstrainedによって作成された中断も同様である:
MemoryConstrained[
CheckAbort[Range[10 ^ 6], Echo["check"], PropagateAborts -> Automatic];Echo["past CheckAbort"], 10 ^ 4]特性と関係 (5)
AbsoluteTiming[TimeConstrained[CheckAbort[Abort[], Pause[3];Echo["check"]], 0.1, Echo["constraint"]]]引数は事実上AbortProtectで包み込まれている:
AbsoluteTiming[TimeConstrained[CheckAbort[Abort[], AbortProtect[Pause[3];Echo["check"]]], 0.1, Echo["constraint"]]]CheckAbortはたとえAbortProtectで包み込まれていても中断を有効にし,検出する:
AbortProtect[
CheckAbort[Echo["before"];Abort[];Echo["after"],
Echo["check"]]]CheckAbort内の計算は終了されるがAbortProtectは完了まで続く:
AbortProtect[
CheckAbort[Echo["before"];Abort[];Echo["after"],
Echo["check"]];Echo["passed CheckAbort"]]ネストしたAbortProtectは中断を遅延するがCheckAbortによる中断の検出は妨害しない:
CheckAbort[
AbortProtect[Echo["before"];Abort[];Echo["after"]],
Echo["check"]]CheckAbortが開始されたときにすでに中断がアクティブなら,第1引数は評価されない:
TimeConstrained[AbortProtect[Pause[1];CheckAbort[Echo["first"], Echo["second"]];Echo["finished AbortProtect"]], .1]計算が中断された場合はCheckAbortを使ってクリーンアップすることができる:
f[x_] := Module[{y}, CheckAbort[$myFlag = True;If[EvenQ[x], y = 2x, Abort[]];$myFlag = False;y,
$myFlag = False;$Aborted
]
]中断を生成する入力に対しても$myFlagはFalseに設定される:
f[3]$myFlagWithCleanupは,はるかに短いコードで同じ目標を達成する:
g[x_] := WithCleanup[$myFlag = True, If[EvenQ[x], 2x, Abort[]],
$myFlag = False]g[3]$myFlag関連するガイド
-
▪
- フロー制御 ▪
- ロバスト性とエラー処理 ▪
- パッケージの保護
履歴
1991 で導入 (2.0) | 2022 で更新 (13.2)
テキスト
Wolfram Research (1991), CheckAbort, Wolfram言語関数, https://reference.wolfram.com/language/ref/CheckAbort.html (2022年に更新).
CMS
Wolfram Language. 1991. "CheckAbort." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/CheckAbort.html.
APA
Wolfram Language. (1991). CheckAbort. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CheckAbort.html
BibTeX
@misc{reference.wolfram_2026_checkabort, author="Wolfram Research", title="{CheckAbort}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/CheckAbort.html}", note=[Accessed: 04-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_checkabort, organization={Wolfram Research}, title={CheckAbort}, year={2022}, url={https://reference.wolfram.com/language/ref/CheckAbort.html}, note=[Accessed: 04-September-2026]}