HPUX AddErrInfo[3]

AddErrInfo in anderen Kapiteln des hpux Handbuch:
Tcl_AddErrorInfo(3) Tcl Tcl_AddErrorInfo(3)
Tcl Library Procedures Tcl Library Procedures
___________________________________________________________________________
NAME
Tcl_AddErrorInfo, Tcl_SetErrorCode, Tcl_PosixError - record
information about errors
SYNOPSIS
#include <tcl.h>
Tcl_AddErrorInfo(interp, message)
Tcl_SetErrorCode(interp, element, element, ... (char *) NULL)
char *
Tcl_PosixError(interp)
ARGUMENTS
Tcl_Interp *interp (in) Interpreter in which to record
information.
char *message (in) Identifying string to record in
errorInfo variable.
char *element (in) String to record as one element of
errorCode variable. Last element
argument must be NULL.
___________________________________________________________________________
DESCRIPTION
These procedures are used to manipulate two global variables that hold
information about errors. The variable errorInfo holds a stack trace
of the operations that were in progress when an error occurred, and is
intended to be human-readable. The variable errorCode holds a list of
items that are intended to be machine-readable. The first item in
errorCode identifies the class of error that occurred (e.g. POSIX |
means an error occurred in a POSIX system call) and additional |
elements in errorCode hold additional pieces of information that
depend on the class. See the Tcl overview manual entry for details on
the various formats for errorCode.
The errorInfo variable is gradually built up as an error unwinds
through the nested operations. Each time an error code is returned to
Tcl_Eval it calls the procedure Tcl_AddErrorInfo to add additional
text to errorInfo describing the command that was being executed when
the error occurred. By the time the error has been passed all the way
back to the application, it will contain a complete trace of the
activity in progress when the error occurred.
- 1 - Formatted: August 11, 1996
Tcl_AddErrorInfo(3) Tcl Tcl_AddErrorInfo(3)
Tcl Library Procedures Tcl Library Procedures
It is sometimes useful to add additional information to errorInfo
beyond what can be supplied automatically by Tcl_Eval.
Tcl_AddErrorInfo may be used for this purpose: its message argument
contains an additional string to be appended to errorInfo. For
example, the source command calls Tcl_AddErrorInfo to record the name
of the file being processed and the line number on which the error
occurred; for Tcl procedures, the procedure name and line number
within the procedure are recorded, and so on. The best time to call
Tcl_AddErrorInfo is just after Tcl_Eval has returned TCL_ERROR. In
calling Tcl_AddErrorInfo, you may find it useful to use the errorLine
field of the interpreter (see the Tcl_Interp manual entry for
details).
The procedure Tcl_SetErrorCode is used to set the errorCode variable.
Its element arguments give one or more strings to record in errorCode:
each element will become one item of a properly-formed Tcl list stored
in errorCode. Tcl_SetErrorCode is typically invoked just before
returning an error. If an error is returned without calling
Tcl_SetErrorCode then the Tcl interpreter automatically sets errorCode
to NONE.
Tcl_PosixError sets the errorCode variable after an error in a POSIX |
kernel call. It reads the value of the errno C variable and calls |
Tcl_SetErrorCode to set errorCode in the POSIX format. In addition, |
Tcl_PosixError returns a human-readable diagnostic message for the |
error (this is the same value that will appear as the third element in
errorCode). It may be convenient to include this string as part of
the error message returned to the application in interp->result.
It is important to call the procedures described here rather than
setting errorInfo or errorCode directly with Tcl_SetVar. The reason
for this is that the Tcl interpreter keeps information about whether
these procedures have been called. For example, the first time
Tcl_AppendResult is called for an error, it clears the existing value
of errorInfo and adds the error message in interp->result to the
variable before appending message; in subsequent calls, it just
appends the new message. When Tcl_SetErrorCode is called, it sets a
flag indicating that errorCode has been set; this allows the Tcl
interpreter to set errorCode to NONE if it receives an error return
when Tcl_SetErrorCode hasn't been called.
If the procedure Tcl_ResetResult is called, it clears all of the state
associated with errorInfo and errorCode (but it doesn't actually
modify the variables). If an error had occurred, this will clear the
error state to make it appear as if no error had occurred after all.
SEE ALSO
Tcl_ResetResult, Tcl_Interp
- 2 - Formatted: August 11, 1996
Tcl_AddErrorInfo(3) Tcl Tcl_AddErrorInfo(3)
Tcl Library Procedures Tcl Library Procedures
KEYWORDS
error, stack, trace, variable
- 3 - Formatted: August 11, 1996