Seth Woolley's Man Viewer

catch(n) - catch, catch - Evaluate script and trap exceptional returns - man n catch

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

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

       catch - Evaluate script and trap exceptional returns

       catch script ?varName?

       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(8,n), regardless of any
       errors that might occur while executing script.

       If script raises an error(8,n), 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(7,n,1 builtins) to the error(8,n) message from interpreting

       If script does not raise(3,n) an error(8,n), catch will return 0 (TCL_OK) and set(7,n,1 builtins)
       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.

       The catch command may be used in(1,8) an if(3,n) to branch based on  the  success
       of a script.

       if(3,n) { [catch {open(2,3,n) $someFile w} fid] } {
           puts(3,n) stderr "Could not open(2,3,n) $someFile for writing\n$fid"
           exit(3,n,1 builtins)  1  } The catch command will not catch compiled syntax errors.
       The first time(1,2,n) proc(5,n) foo is called, the body will be compiled and a  Tcl
       error(8,n) will be generated.

       proc(5,n) foo {} {
           catch {expr(1,3,n) {1 +- }} }

       error(8,n)(n), break(n), continue(n)

       catch, error(8,n)

Tcl                                   8.0                             catch(n)

References for this manual (incoming links)