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.
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