error(3)

NAME

Tk::Error - Method invoked to process background errors

SYNOPSIS

Customization:
    require Tk::ErrorDialog;
or
    sub Tk::Error
    {
      my ($widget,$error,@locations) = @_;
      ...
    }

DESCRIPTION

The Tk::Error method is invoked by perl/Tk when a back ground error occurs. Two possible implementations are pro
vided 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 applica
tion 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.

BUGS

If after or fileevent are not invoked as methods of a wid get then perl/Tk is unable to provide a $mainwindow argu ment. 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.

SEE ALSO

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

KEYWORDS

background error, reporting
Copyright © 2010-2025 Platon Technologies, s.r.o.           Index | Man stránky | tLDP | Dokumenty | Utilitky | O projekte
Design by styleshout