NAME
catch - Evaluate script and trap exceptional returns
SYNOPSIS
catch script ?varName?
_________________________________________________________________
DESCRIPTION
The catch command may be used to prevent errors from
aborting command interpretation. Catch calls the Tcl
interpreter recursively to execute script, and always
returns without raising an error, regardless of any errors
that might occur while executing script.
If script raises an error, catch will return a non-zero
integer value corresponding to one of the exceptional
return codes (see tcl.h for the definitions of code val
ues). If the varName argument is given, then the variable
it names is set to the error message from interpreting
script.
If script does not raise an error, catch will return 0
(TCL_OK) and set the variable to the value returned from
script.
Note that catch catches all exceptions, including those
generated by break and continue as well as errors. The
only errors that are not caught are syntax errors found
when the script is compiled. This is because the catch
command only catches errors during runtime. When the
catch statement is compiled, the script is compiled as
well and any syntax errors will generate a Tcl error.
EXAMPLES
The catch command may be used in an if to branch based on
the success of a script.
if { [catch {open $someFile w} fid] } {
puts stderr "Could not open $someFile for writing\n$fid"
exit 1
}
The catch command will not catch compiled syntax errors.
The first time proc foo is called, the body will be com
piled and a Tcl error will be generated.
proc foo {} {
catch {expr {1 +- }}
}
catch, error
Man(1) output converted with
man2html