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


Manual Reference Pages  -  TK::ERROR (3)

.ds Aq ’

NAME

Tk::Error - Method invoked to process background errors

CONTENTS

SYNOPSIS

Customization:



    require Tk::ErrorDialog;



or



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

    }



DESCRIPTION

The <B>Tk::ErrorB> 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 <B>Tk::ErrorB> 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 <B>Tk::ErrorB> method later when Tk is idle.

<B>Tk::ErrorB> is invoked by perl/Tk as if by the perl code:

$mainwindow-><B>Tk::ErrorB>(error message, location ...);

$mainwindow is the <B>MainWindowB> 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 <B>Tk::ErrorB> method. If another error occurs within the <B>Tk::ErrorB> method (for example if it calls <B>dieB>) then Tk reports this error itself by writing a message to stderr (this is to avoid infinite loops due to any bugs in <B>Tk::ErrorB>).

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

The <B>TkB> module includes a default <B>Tk::ErrorB> subroutine that simply reports the error on stderr.

Tk::ErrorDialog

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 <B>bgerrorB>, with a twist: since there is only one <B>ErrorDialogB> 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 <B>ErrorDialogB> options you must call the constructor and create it manually.

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

$mw-><B>ErrorDialogB>(-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 <B>Tk::ErrorB> 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.

BUGS

If <B>afterB> or <B>fileeventB> 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 <B>Tk::ErrorB> with string ’Tk’ instead: <B>Tk->Tk::Error\(...\)B>. In this case the <B>Tk::ErrorB> in <B>Tk::ErrorDialogB> and similar implementations cannot popup a window as they don’t know which display to use. A mechanism to supply the <B>MainWindowB> in applications which only have one (a very common case) should be provided.

SEE ALSO

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

KEYWORDS

background error, reporting
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 ERROR (3) 2013-11-15

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