catch.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
- '"
- '" Copyright (c) 1993-1994 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: catch.n,v 1.5.18.2 2004/11/09 10:25:23 dkf Exp $
- '"
- .so man.macros
- .TH catch n "8.0" Tcl "Tcl Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- catch - Evaluate script and trap exceptional returns
- .SH SYNOPSIS
- fBcatchfI script fR?fIvarNamefR?
- .BE
- .SH DESCRIPTION
- .PP
- The fBcatchfR command may be used to prevent errors from aborting command
- interpretation. The fBcatchfR command calls the Tcl interpreter recursively to
- execute fIscriptfR, and always returns without raising an error,
- regardless of any errors that might occur while executing fIscriptfR.
- .PP
- If fIscriptfR raises an error, fBcatchfR will return a non-zero integer
- value corresponding to the exceptional return code returned by evaluation
- of fIscriptfR. Tcl defines the normal return code from script
- evaluation to be zero (0), or fBTCL_OKfR. Tcl also defines four exceptional
- return codes: 1 (fBTCL_ERRORfR), 2 (fBTCL_RETURNfR), 3 (fBTCL_BREAKfR),
- and 4 (fBTCL_CONTINUEfR). Errors during evaluation of a script are indicated
- by a return code of fBTCL_ERRORfR. The other exceptional return codes are
- returned by the fBreturnfR, fBbreakfR, and fBcontinuefR commands
- and in other special situations as documented. Tcl packages can define
- new commands that return other integer values as return codes as well,
- and scripts that make use of the fBreturn -codefR command can also
- have return codes other than the five defined by Tcl.
- .PP
- If the fIvarNamefR argument is given, then the variable it names is
- set to the result of the script evaluation. When the return code from
- the script is 1 (fBTCL_ERRORfR), the value stored in fIvarNamefR is an error
- message. When the return code from the script is 0 (fBTCL_OKfR), the value
- stored in fIresultVarNamefR is the value returned from fIscriptfR.
- .PP
- If fIscriptfR does not raise an error, fBcatchfR will return 0
- (fBTCL_OKfR) and set the variable to the value returned from fIscriptfR.
- .PP
- Note that fBcatchfR catches all exceptions, including those
- generated by fBbreakfR and fBcontinuefR 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.
- .SH EXAMPLES
- The fBcatchfR command may be used in an fBiffR to branch based on
- the success of a script.
- .CS
- if { [fBcatchfR {open $someFile w} fid] } {
- puts stderr "Could not open $someFile for writing\n$fid"
- exit 1
- }
- .CE
- .PP
- The fBcatchfR command will not catch compiled syntax errors. The
- first time proc fBfoofR is called, the body will be compiled and a
- Tcl error will be generated.
- .CS
- proc foo {} {
- fBcatchfR {expr {1 +- }}
- }
- .CE
- .SH "SEE ALSO"
- break(n), continue(n), error(n), return(n), tclvars(n)
- .SH KEYWORDS
- catch, error