ABCDEFGHIJKLMNOPQRSTUVWXYZ

catch

catch(n)                     Tcl Built-In Commands                    catch(n)



______________________________________________________________________________

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.


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

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


KEYWORDS
       catch, error



Tcl                                   8.0                             catch(n)