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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990-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: bgerror.n,v 1.4.18.1 2004/10/27 09:35:38 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH bgerror n 7.5 Tcl "Tcl Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. bgerror - Command invoked to process background errors
  16. .SH SYNOPSIS
  17. fBbgerror fImessagefR
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. The fBbgerrorfR command doesn't exist as built-in part of Tcl.  Instead,
  22. individual applications or users can define a fBbgerrorfR
  23. command (e.g. as a Tcl procedure) if they wish to handle background
  24. errors.
  25. .PP
  26. A background error is one that occurs in an event handler or some
  27. other command that didn't originate with the application.
  28. For example, if an error occurs while executing a command specified
  29. with the fBafterfR command, then it is a background error.
  30. For a non-background error, the error can simply be returned up
  31. through nested Tcl command evaluations until it reaches the top-level
  32. code in the application; then the application can report the error
  33. in whatever way it wishes.  When a background error occurs, the
  34. unwinding ends in the Tcl library and there is no obvious way for Tcl
  35. to report the error.
  36. .PP
  37. When Tcl detects a background error, it saves information about the
  38. error and invokes the fBbgerrorfR command later as an idle event
  39. handler. Before invoking fBbgerrorfR, Tcl restores the
  40. fBerrorInfofR and fBerrorCodefR variables to their values at the
  41. time the error occurred, then it invokes fBbgerrorfR with the error
  42. message as its only argument.  Tcl assumes that the application has
  43. implemented the fBbgerrorfR command, and that the command will
  44. report the error in a way that makes sense for the application.  Tcl
  45. will ignore any result returned by the fBbgerrorfR command as long
  46. as no error is generated.
  47. .PP
  48. If another Tcl error occurs within the fBbgerrorfR command (for
  49. example, because no fBbgerrorfR command has been defined) then Tcl
  50. reports the error itself by writing a message to stderr.
  51. .PP
  52. If several background errors accumulate before fBbgerrorfR is
  53. invoked to process them, fBbgerrorfR will be invoked once for each
  54. error, in the order they occurred.  However, if fBbgerrorfR returns
  55. with a break exception, then any remaining errors are skipped without
  56. calling fBbgerrorfR.
  57. .PP
  58. Tcl has no default implementation for fBbgerrorfR. However, in
  59. applications using Tk there is a default fBbgerrorfR procedure which
  60. posts a dialog box containing the error message and offers the user a
  61. chance to see a stack trace showing where the error occurred.  In
  62. addition to allowing the user to view the stack trace, the dialog
  63. provides an additional application configurable button which may be
  64. used, for example, to save the stack trace to a file.  By default,
  65. this is the behavior associated with that button.  This behavior can
  66. be redefined by setting the option database values
  67. fB*ErrorDialog.function.textfR, to specify the caption for the
  68. function button, and fB*ErrorDialog.function.commandfR, to specify
  69. the command to be run.  The text of the stack trace is appended to the
  70. command when it is evaluated.  If either of these options is set to
  71. the empty string, then the additional button will not be displayed in
  72. the dialog.
  73. .PP
  74. If you are writing code that will be used by others as part of a
  75. package or other kind of library, consider avoiding fBbgerrorfR.
  76. The reason for this is that the application programmer may also want
  77. to define a fBbgerrorfR, or use other code that does and thus will
  78. have trouble integrating your code.
  79. .SH "EXAMPLE"
  80. This fBbgerrorfR procedure appends errors to a file, with a timestamp.
  81. .CS
  82. proc bgerror {message} {
  83.     set timestamp [clock format [clock seconds]]
  84.     set fl [open mylog.txt {WRONLY CREAT APPEND}]
  85.     puts $fl "$timestamp: bgerror in $::argv '$message'"
  86.     close $fl
  87. }
  88. .CE
  89. .SH "SEE ALSO"
  90. after(n), tclvars(n)
  91. .SH KEYWORDS
  92. background error, reporting