Version 8 of bgerror

Updated 2012-01-09 23:37:23 by dkf

http://purl.org/tcl/home/man/tcl8.4/TclCmd/bgerror.htm is the official man page. As of Tcl 8.5, interp bgerror provides a more flexible handling of these things.

bgerror message

Note that it is not expected that user code will call this directly; instead, it is there to be redefined so that user code can monitor and respond to errors in event handlers.

Note that in very old code you may see this command written as tkerror; that name is obsolete nowadays. Use bgerror instead as it has the same semantics but without the implicit coupling to Tk.

[fill in useful tricks and examples for using bgerror]

Does the documentation describe the calling convention? I didn't notice it. My experience is that the error-handler invokes it as something like

      bgerror [firstLineOf $::errorInfo]

During development, one might rush a hack like

      proc bgerror message {
          puts stderr "An event-based script faulted with '$message'."
      }

into use.

DKF: I find that it's better to print errorInfo in such cases.


Ken: I want to enquire what is the best method if i got a proc that runs every 20s like the follow code but i want to catch its errors if any of the proc that run afterwards run into errors? I heard using bgerror is not recommended, so what is the best method?

 proc a { } {

  [do something]

  after 1000 a 
 }

KPV 2008/06/13 : NB. in 8.4 the default bgerror code is not tile aware. Thus, the following idiomatic (but incorrect) code will fail (more precisely, the bgerror code configures a scrollbar's -relief which tile doesn't allow):

  package require -exact Tk 8.4
  package require tile
  namespace import -force ::ttk::*
  after 10 asdf