ReqErr(3I) InterViews Reference Manual ReqErr(3I)NAME
ReqErr - handle request errors
SYNOPSIS
#include <InterViews/reqerr.h>
DESCRIPTION
Some requests to the window server may generate an error. For example, if a window is destroyed while it is being repositioned interac-
tively, the request to place the window in the new position will fail. Normally, errors cause a process to terminate. The ReqErr class is
used to handle errors within an application. The base class defines the attributes associated with each error, including a message string
describing the error, an integer request code that specifies the kind of call that generated the error, and a id object that was the target
of the request. When an error occurs, the attributes of the current request handler are assigned and the handler's Error operation is
called.
PUBLIC OPERATIONS
ReqErr* Install()
Use this error handler for subsequent errors and return the previous error handler.
virtual void Error()
Handle a detected error. The default handler is a nop.
SEE ALSO Interactor(3I)InterViews 15 June 1987 ReqErr(3I)
Check Out this Related Man Page
XSetErrorHandler() XSetErrorHandler()
Name
XSetErrorHandler - set a fatal error event handler.
Synopsis
int (*XSetErrorHandler(handler))()
int (* handler)(Display *)
Arguments
handler The user-defined function to be called to handle error events. If a NULL pointer, reinvoke the default handler, which prints a
message and exits.
Returns
The previous nonfatal error handler.
Description
The error handler function specified in handler will be called by Xlib whenever an XError event is received. These are nonfatal condi-
tions, such as unexpected values for arguments, or a failure in server memory allocation. It is acceptable for this procedure to return,
though the default handler simply prints a message and exits. However, the error handler should NOT perform any operations (directly or
indirectly) that generate protocol requests or that look for input events.
In Release 4 and Release 5, XSetErrorHandler() returns a pointer to the previous error handler.
The function is called with two arguments: the display variable and a pointer to the XErrorEvent structure. Here is a trivial example of
a user-defined error handler:
int myhandler (display, myerr)
Display *display;
XErrorEvent *myerr;
{
char msg[80];
XGetErrorText(display, myerr->error_code, msg, 80);
fprintf(stderr, "Error code %s
", msg);
}
This is how the example routine would be used in XSetErrorHandler():
XSetErrorHandler(myhandler);
Note that XSetErrorHandler() is one of the few routines that does not require a display argument. The routine that calls the error handler
gets the display variable from the XErrorEvent structure.
The error handler is not called on BadName errors from OpenFont, LookupColor, and AllocNamedColor protocol requests, or on BadFont errors
from a QueryFont protocol request. These errors are all indicated by Status return value of zero in the corresponding Xlib routines, which
must be caught and handled by the application.
Use XIOErrorHandler to provide a handler for I/O errors such as network failures or server host crashes.
In the XErrorEvent structure shown below, the serial member is the number of requests (starting from 1) sent over the network connection
since it was opened. It is the number that was the value of the request sequence number immediately after the failing call was made. The
request_code member is a protocol representation of the name of the procedure that failed and is defined in <X11/Xproto.h>.
For more information, see Volume One, Chapter 3, Basic Window Program.
Structures
typedef struct {
int type
Display *display; /* display the event was read from */
XID resourceid; /* resource ID */
unsigned long serial; /* serial number of failed request */
unsigned char error_code; /* error code of failed request */
unsigned char request_code; /* major opcode of failed request */
unsigned char minor_code; /* minor opcode of failed request */
} XErrorEvent;
See Also
XDisplayName(), XGetErrorDatabaseText(), XGetErrorText(), XSetAfterFunction(), XSetIOErrorHandler(), XSynchronize().
Xlib - Error Handling XSetErrorHandler()