Catch[expr] returns the argument of the first Throw generated in the evaluation of expr.
Catch[expr, form] returns value from the first Throw[value, tag] for which form matches tag.
Catch[expr, form, f] 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 re-evaluated every time it is compared to form.
See The Mathematica Book: Section 2.5.9.
See also: Check, CheckAbort.