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 ====== <> ---- !!!!!! [Tcl syntax] | [Arts and crafts of Tcl-tk programming] %| [Category Command] |% !!!!!!