After an error has occurred, this variable will be set to
hold additional information about the error in a form that
is easy to process with programs. errorCode
consists of a Tcl list with one or more elements. The
first element of the list identifies a general class of
errors, and determines the format of the rest of the list.
The following formats for errorCode are used by
the Tcl core; individual applications may define additional
formats.
ARITH code msg-
This format is used when an arithmetic error occurs (e.g.
an attempt to divide by zero in the expr
command). code identifies the precise error and
msg provides a human-readable description of the
error. code will be either DIVZERO
(for an attempt to divide by zero), DOMAIN (if an
argument is outside the domain of a function, such as
acos(-3)), IOVERFLOW (for integer
overflow), OVERLFLOW (for a floating-point
overflow), or UNKNOWN (if the cause of the error
cannot be determined).
CHILDKILLED pid sigName msg-
This format is used when a child process has been killed
because of a signal. The second element of
errorCode will be the process's identifier (in
decimal). The third element will be the symbolic name of
the signal that caused the process to terminate; it will be
one of the names from the include file signal.h,
such as SIGPIPE. The fourth element will be a
short human-readable message describing the signal, such as
``write on pipe with no readers'' for SIGPIPE.
CHILDSTATUS pid code-
This format is used when a child process has exited with a
non-zero exit status. The second element of
errorCode will be the process's identifier (in
decimal) and the third element will be the exit code
returned by the process (also in decimal).
CHILDSUSP pid sigName msg-
This format is used when a child process has been suspended
because of a signal. The second element of
errorCode will be the process's identifier, in
decimal. The third element will be the symbolic name of
the signal that caused the process to suspend; this will be
one of the names from the include file signal.h,
such as SIGTTIN. The fourth element will be a
short human-readable message describing the signal, such as
``background tty read'' for SIGTTIN.
NONE-
This format is used for errors where no additional
information is available for an error besides the message
returned with the error. In these cases
errorCode will consist of a list containing a
single element whose contents are NONE.
POSIX errName msg-
If the first element of errorCode is
POSIX, then the error occurred during a
POSIX kernel call. The second element of the
list will contain the symbolic name of the error that
occurred, such as ENOENT; this will be one of the
values defined in the include file errno.h. The
third element of the list will be a human-readable message
corresponding to errName, such as ``no such file
or directory'' for the ENOENT case.
To set errorCode, applications should use library
procedures such as Tcl_SetErrorCode and
Tcl_PosixError, or they may invoke the
error command. If one of these methods hasn't
been used, then the Tcl interpreter will reset the variable
to NONE after the next error.