Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Error(3)	      User Contributed Perl Documentation	      Error(3)

       Tk::Error - Method invoked to process background	errors


	   require Tk::ErrorDialog;


	   sub Tk::Error
	     my	($widget,$error,@locations) = @_;


       The Tk::Error method is invoked by perl/Tk when a background error
       occurs. Two possible implementations are	provided in the	distribution
       and individual applications or users can	(re)define a Tk::Error method
       (e.g. as	a perl sub) if they wish to handle background errors in	some
       other manner.

       A background error is one that occurs in	a command that didn't
       originate with the application.	For example, if	an error occurs	while
       executing a callback specified with a bind or a after command, then it
       is a background error.  For a non-background error, the error can
       simply be returned up through nested subroutines	until it reaches the
       top-level code in the application; then the application can report the
       error in	whatever way it	wishes.	 When a	background error occurs, the
       unwinding ends in the Tk	library	and there is no	obvious	way for	Tk to
       report the error.

       When Tk detects a background error, it saves information	about the
       error and invokes the Tk::Error method later when Tk is idle.

       Tk::Error is invoked by perl/Tk as if by	the perl code:

       A A A A $mainwindow->Tk::Error("error message", location	...);

       $mainwindow is the MainWindow associated	with widget which detected the
       error, "error message" is a string describing the error that has	been
       detected, location is a list of one or more "locations" which describe
       the call	sequence at the	point the error	was detected.

       The locations are a typically a mixture of perl location	reports	giving
       script name and line number, and	simple strings describing locations in
       core Tk or perl/Tk C code.

       Tk will ignore any result returned by the Tk::Error method.  If another
       error occurs within the Tk::Error method	(for example if	it calls die)
       then Tk reports this error itself by writing a message to stderr	(this
       is to avoid infinite loops due to any bugs in Tk::Error).

       If several background errors accumulate before Tk::Error	is invoked to
       process them, Tk::Error will be invoked once for	each error, in the
       order they occurred.  However, if Tk::Error calls Tk->break, then any
       remaining errors	are skipped without calling Tk::Error.

       The Tk module includes a	default	Tk::Error subroutine that simply
       reports the error on stderr.

       An alternate definition is provided via:

       A A A A "require	Tk::ErrorDialog;"

       that posts a dialog box containing the error message and	offers the
       user a chance to	see a stack trace showing where	the error occurred.

       This is an OO implementation of the Tcl/Tk command bgerror, with	a
       twist: since there is only one ErrorDialog widget, you aren't required
       to invoke the constructor to create it; it will be created
       automatically when the first background error occurs.  However, in
       order to	configure the -cleanupcode and -appendtraceback	ErrorDialog
       options you must	call the constructor and create	it manually.

       The ErrorDialog object essentially consists of two subwidgets: a	Dialog
       widget to display the background	error and a Text widget	for the
       traceback information.  If required, you	can invoke various widget
       methods to customize these subwidgets - their advertised	names are
       described below.

       A A A A $mw->ErrorDialog(-cleanupcode =>	code, -appendtraceback =>

       $mw is a	window reference.

       code is a CODE reference	if special post-background error processing is
       required	(default is undefined).	The callback subroutine	is called with
       @_ having the same arguments that Tk::Error was invoked with.

       bool is a boolean indicating whether or not to append successive
       tracebacks (default is 1, do append).

   Advertised ErrorDialog widgets
       error_dialog is the Dialog widget reference.

       text is the Text	widget reference containing the	traceback information.

       If after	or fileevent are not invoked as	methods	of a widget then
       perl/Tk is unable to provide a $mainwindow argument.  To	support	such
       code from earlier versions of perl/Tk perl/Tk therefore calls Tk::Error
       with string 'Tk'	instead: Tk->Tk::Error\(...\).	In this	case the
       Tk::Error in Tk::ErrorDialog and	similar	implementations	cannot "popup"
       a window	as they	don't know which display to use.  A mechanism to
       supply the MainWindow in	applications which only	have one (a very
       common case) should be provided.

       Tk::bind	Tk::after Tk::fileevent

       background error, reporting

perl v5.32.1			  2013-11-15			      Error(3)


Want to link to this manual page? Use this URL:

home | help