CatchExceptions[expr,spec]
根据 spec,捕获并转换可能由 expr 抛出的部分或全部异常.
CatchExceptions[spec]
表示 CatchExceptions 的一种运算符形式.
CatchExceptions
CatchExceptions[expr,spec]
根据 spec,捕获并转换可能由 expr 抛出的部分或全部异常.
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)
CatchExceptions[ThrowException["ArgumentError", 100], "ArgumentError"]CatchExceptions[ThrowException["Error", 42], "ArgumentError"]这将使用 RegisterExceptionType 注册类型 "ArgumentError" 的子类型:
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 语言. 2026. "CatchExceptions." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/CatchExceptions.html.
APA
Wolfram 语言. (2026). CatchExceptions. Wolfram 语言与系统参考资料中心. 追溯自 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]}