returns the argument of the first Throw generated in the evaluation of expr.


returns value from the first Throw[value,tag] for which form matches tag.


returns f[value,tag].


  • Catch[expr,] always returns the value of expr if no Throw was generated during the evaluation.
  • form can be any expression, and is often a pattern.
  • tag in Throw[value,tag] is reevaluated every time it is compared to form.


open allclose all

Basic Examples  (3)

Exit to the enclosing Catch as soon as the Throw is evaluated:

Define a function that can "throw an exception":

The result of the Catch is just what is thrown by Throw:

Use Throw to exit a loop when a criterion is satisfied:

Scope  (5)

Catch can catch a Throw from inside essentially any function:

The nearest enclosing Catch catches the Throw:

Catch picks up the first Throw that is evaluated:

Throw need not occur lexically inside Catch:

A function that can throw a number of different exceptions:

A handler for the possible exceptions:

Generalizations & Extensions  (3)

Catch the Throw with tag u:

The inner Catch catches the Throw:

The outer Catch catches the Throw:

Keep the tag local:

Applications  (3)

Find the next prime after 1010:

Find the first power of 17 equal to 1 mod 19:

Stop if an iteration gets too large:

Properties & Relations  (1)

Use Check to throw an exception if a message is generated:

Wolfram Research (1988), Catch, Wolfram Language function, (updated 1996).


Wolfram Research (1988), Catch, Wolfram Language function, (updated 1996).


Wolfram Language. 1988. "Catch." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 1996.


Wolfram Language. (1988). Catch. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2024_catch, author="Wolfram Research", title="{Catch}", year="1996", howpublished="\url{}", note=[Accessed: 13-July-2024 ]}


@online{reference.wolfram_2024_catch, organization={Wolfram Research}, title={Catch}, year={1996}, url={}, note=[Accessed: 13-July-2024 ]}