catch.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1993-1994 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: catch.n,v 1.5.18.2 2004/11/09 10:25:23 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH catch n "8.0" Tcl "Tcl Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. catch - Evaluate script and trap exceptional returns
  16. .SH SYNOPSIS
  17. fBcatchfI script fR?fIvarNamefR?
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. The fBcatchfR command may be used to prevent errors from aborting command
  22. interpretation.  The fBcatchfR command calls the Tcl interpreter recursively to
  23. execute fIscriptfR, and always returns without raising an error,
  24. regardless of any errors that might occur while executing fIscriptfR.
  25. .PP
  26. If fIscriptfR raises an error, fBcatchfR will return a non-zero integer
  27. value corresponding to the exceptional return code returned by evaluation
  28. of fIscriptfR.  Tcl defines the normal return code from script
  29. evaluation to be zero (0), or fBTCL_OKfR.  Tcl also defines four exceptional
  30. return codes: 1 (fBTCL_ERRORfR), 2 (fBTCL_RETURNfR), 3 (fBTCL_BREAKfR),
  31. and 4 (fBTCL_CONTINUEfR).  Errors during evaluation of a script are indicated
  32. by a return code of fBTCL_ERRORfR.  The other exceptional return codes are
  33. returned by the fBreturnfR, fBbreakfR, and fBcontinuefR commands
  34. and in other special situations as documented.  Tcl packages can define
  35. new commands that return other integer values as return codes as well,
  36. and scripts that make use of the fBreturn -codefR command can also
  37. have return codes other than the five defined by Tcl.
  38. .PP
  39. If the fIvarNamefR argument is given, then the variable it names is
  40. set to the result of the script evaluation.  When the return code from
  41. the script is 1 (fBTCL_ERRORfR), the value stored in fIvarNamefR is an error
  42. message.  When the return code from the script is 0 (fBTCL_OKfR), the value
  43. stored in fIresultVarNamefR is the value returned from fIscriptfR.
  44. .PP
  45. If fIscriptfR does not raise an error, fBcatchfR will return 0
  46. (fBTCL_OKfR) and set the variable to the value returned from fIscriptfR.
  47. .PP
  48. Note that fBcatchfR catches all exceptions, including those
  49. generated by fBbreakfR and fBcontinuefR as well as errors.  The
  50. only errors that are not caught are syntax errors found when the
  51. script is compiled.  This is because the catch command only catches
  52. errors during runtime.  When the catch statement is compiled, the
  53. script is compiled as well and any syntax errors will generate a Tcl
  54. error. 
  55. .SH EXAMPLES
  56. The fBcatchfR command may be used in an fBiffR to branch based on
  57. the success of a script.
  58. .CS
  59. if { [fBcatchfR {open $someFile w} fid] } {
  60.     puts stderr "Could not open $someFile for writing\n$fid"
  61.     exit 1
  62. }
  63. .CE
  64. .PP
  65. The fBcatchfR command will not catch compiled syntax errors.  The
  66. first time proc fBfoofR is called, the body will be compiled and a
  67. Tcl error will be generated. 
  68. .CS
  69. proc foo {} {
  70.     fBcatchfR {expr {1 +- }}
  71. }
  72. .CE
  73. .SH "SEE ALSO" 
  74. break(n), continue(n), error(n), return(n), tclvars(n)
  75. .SH KEYWORDS
  76. catch, error