Site hosted by Angelfire.com: Build your free website today!
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 values). 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.

EXAMPLE
  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 compiled and a Tcl error will be
  generated.

  proc foo {} {
      catch {expr {1 +- }}
  }


  % set x 100
  100
  
  % unset x
  % unset x
  can't unset "x": no such variable
  
  % catch {unset x} msg
  1
  
  % puts $msg
  can't unset "x": no such variable

SEE ALSO
  break continue if