GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Error(3) User Contributed Perl Documentation Error(3)

Tk::Error - Method invoked to process background errors

Customization:

    require Tk::ErrorDialog;

or

    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:

    $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:

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

    $mw->ErrorDialog(-cleanupcode => code, -appendtraceback => bool);

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

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
2013-11-15 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.