CatchExceptions[expr,spec]
exprによって投げられる可能性のある例外の一部または全部を,specに従って捕捉し,変換する.
CatchExceptions[spec]
CatchExceptionsの演算子形式を表す.
CatchExceptions
CatchExceptions[expr,spec]
exprによって投げられる可能性のある例外の一部または全部を,specに従って捕捉し,変換する.
CatchExceptions[spec]
CatchExceptionsの演算子形式を表す.
詳細
- CatchExceptionsは,spec に一致する例外を捕捉し,その他の例外はさらに伝播させる.
- 指定 spec は次のいずれかの形式を取ることができる.
-
tagspec 例外タグの指定 tagspechandler 例外タグおよびハンドラの指定 {tagspec1handler1,…} 異なるタグ指定に対する複数のハンドラ - tagspec の異なる形式には,次の例外一致の文法がある.
-
All すべての例外 tag 型 tag またはその下位の型に属するすべての例外 {tag1,tag2,…} 型 tagnのいずれか,またはその下位の型に属するすべての例外 - CatchExceptions[expr,tagspechandler]は,以下の戻り値を持つことがある.
-
expr expr において例外は送出されず,その結果が返される handler[exceptionData] 例外が捕捉され,そのデータ関連付けに handler が適用される - その handler は任意の関数でよい.連想(例外データ)が単一の引数として渡される.
- ハンドラが指定されていない場合は,デフォルトのハンドラが使用される.これは,例外データを自動的にFailureオブジェクトに変換する.
- spec が複数の節から構成される場合,スローされたExceptionに一致する最初のものが使用される.
- spec における例外ハンドラのコードによってスローされるいかなる例外も,現在のCatchExceptionsの呼び出しでは処理されない.それらを処理するためには,別途CatchExceptionsの呼び出しを外側にラップする必要がある.
例題
すべて開く すべて閉じる例 (1)
次は,スローされたすべての例外を捕捉し,デフォルトの例外ハンドラを用いてそれらを処理する:
CatchExceptions[ThrowException["Error", 42], All]次は,CatchExceptionsの演算子形式を用いて全く同じことを行う:
CatchExceptions[All][ThrowException["Error", 42]]通常の実行(例外がスローされない場合)は,渡された式の値が返される:
CatchExceptions[1 + 2 + 3, All]CatchExceptions[ThrowException["Error", 42], All -> handler]スコープ (2)
次は,"ArgumentError"型の例外のみを捕捉する:
CatchExceptions[ThrowException["ArgumentError", 100], "ArgumentError"]CatchExceptions[ThrowException["Error", 42], "ArgumentError"]次は,"ArgumentError"型の下位の型をRegisterExceptionTypeを使って登録する:
RegisterExceptionType[ArgumentTypeError, "ArgumentError"]親の例外型を使用することで,その下位の型の例外も捕捉できる:
CatchExceptions["ArgumentError" -> argErrorHandler][ThrowException[ArgumentTypeError, 42]]また,親の例外型(または All)を包括的な捕捉節として用いる複数節構文も使用できる:
CatchExceptions[{
ArgumentTypeError -> argTypeErrorHandler, "ArgumentError" -> argErrorHandler
}][ThrowException[ArgumentTypeError, 42]]これは,捕捉された例外のデータに基づいて,捕捉された例外を条件付きで再度スローする:
CatchExceptions[{
ArgumentTypeError -> Function[If[#ExceptionPayload > 10, ThrowException @ #, #ExceptionPayload]],
"ArgumentError" -> argErrorHandler
}][ThrowException[ArgumentTypeError, 42]]再スローされた例外を処理するためには,CatchExceptionsへの追加の呼び出しが必要となる.
テクニカルノート
-
▪
- 例外の処理
関連するガイド
-
▪
- フロー制御 ▪
- ロバスト性とエラー処理 ▪
- パッケージの保護 ▪
- スコープ構文
テキスト
Wolfram Research (2026), CatchExceptions, Wolfram言語関数, https://reference.wolfram.com/language/ref/CatchExceptions.html.
CMS
Wolfram Language. 2026. "CatchExceptions." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/CatchExceptions.html.
APA
Wolfram Language. (2026). CatchExceptions. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CatchExceptions.html
BibTeX
@misc{reference.wolfram_2026_catchexceptions, author="Wolfram Research", title="{CatchExceptions}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/CatchExceptions.html}", note=[Accessed: 24-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_catchexceptions, organization={Wolfram Research}, title={CatchExceptions}, year={2026}, url={https://reference.wolfram.com/language/ref/CatchExceptions.html}, note=[Accessed: 24-August-2026]}