Version 7 of bgerror

Updated 2010-10-23 10:43:00 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.

[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