## Tcl8.6.17/Tk8.6.17 Documentation > Tk C API > CrtErrHdlr

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    Tk_CreateErrorHandler, Tk_DeleteErrorHandler — X 通信規約の不都合を処理する handle X protocol errors
  SYNOPSIS
    #include <tk.h>
    Tk_ErrorHandler
    Tk_CreateErrorHandler(display, error, request, minor, proc, clientData)
    Tk_DeleteErrorHandler(handler)
  引数 ARGUMENTS
    Display *display (入力in)
    int error (入力in)
    int request (入力in)
    int minor (入力in)
    Tk_ErrorProc *proc (入力in)
    ClientData clientData (入力in)
    Tk_ErrorHandler handler (入力in)
  説明 DESCRIPTION
  KEYWORDS

### NAME

Tk_CreateErrorHandler, Tk_DeleteErrorHandler — X 通信規約の不都合を処理する handle X protocol errors

### SYNOPSIS

#include <tk.h>
Tk_ErrorHandler
Tk_CreateErrorHandler(display, error, request, minor, proc, clientData)
Tk_DeleteErrorHandler(handler)

### 引数 ARGUMENTS

Display *display (入力in)
  不都合が処理される表示器｡ Display whose errors are to be handled.

int error (入力in)
  不都合番号欄内のこの値の不都合行事とのみ合致する｡もし -1 であれば､どの不都合番号値とも合致する｡ Match only error events with this value in the error_code field. If -1, then match any error_code value.

int request (入力in)
  要求番号欄内のこの値の不都合行事とのみ合致する｡もし -1 であれば､どの要求番号値とも合致する｡ Match only error events with this value in the request_code field. If -1, then match any request_code value.

int minor (入力in)
  少数派番号欄内のこの値の不都合行事とのみ合致する｡もし -1 であれば､どの少数派番号値とも合致する｡　 Match only error events with this value in the minor_code field. If -1, then match any minor_code value.

Tk_ErrorProc *proc (入力in)
  何時であれ､表示器の為の不都合行事を受取り､不都合と要求と少数派に合致した時に起動すべき手続函数｡ヌルの場合はどの合致した不都合も無視することを意味する｡　 Procedure to invoke whenever an error event is received for display and matches error, request, and minor. NULL means ignore any matching errors.

ClientData clientData (入力in)
  proc に渡すべき任意の一語｡ Arbitrary one-word value to pass to proc.

Tk_ErrorHandler handler (入力in)
  削除すべき不都合処理機能の為の字句(Tk_CreateErrorHandlerへの事前の呼出しからの返し値)｡ Token for error handler to delete (return value from a previous call to Tk_CreateErrorHandler).

### 説明 DESCRIPTION

Tk_CreateErrorHandler は何時であれ特定の表示装置 (display) 上に特定の通信規定不具合が生じた時は､特定の手続函数(proc)が呼ばれる様に手配する｡実在しない窓に対応付けを試みる様な､ X 通信規定が誤って使われた時に､通信規定不具合が生じる｡生じるかもしれない種類の不都合の更なる情報については XSetErrorHandler に関する Xlib 説明文を参照されたい｡特定の不都合を処理するために起動される proc に就いては､５つのことが起るに違いない: Tk_CreateErrorHandler arranges for a particular procedure (proc) to be called whenever certain protocol errors occur on a particular display (display). Protocol errors occur when the X protocol is used incorrectly, such as attempting to map a window that does not exist. See the Xlib documentation for XSetErrorHandler for more information on the kinds of errors that can occur. For proc to be invoked to handle a particular error, five things must occur:

1. 不都合は display に属さなければならない｡ The error must pertain to display.

2. Tk_CreateErrorHandler への error 引数は -1 であったか､ error 引数が不都合行事からの error_code 欄に合致すべきか､のどちらか｡ Either the error argument to Tk_CreateErrorHandler must have been -1, or the error argument must match the error_code field from the error event.

3. Tk_CreateErrorHandler への request 引数は -1 であったか､ request 引数が不都合行事からの request_code 欄に合致すべきか､のどちらか｡ Either the request argument to Tk_CreateErrorHandler must have been -1, or the request argument must match the request_code field from the error event.

4. Tk_CreateErrorHandler への minor 引数は -1 であったか､ minor 引数が不都合行事からの minor_code 欄に合致すべきか､のどちらか｡ Either the minor argument to Tk_CreateErrorHandler must have been -1, or the minor argument must match the minor_code field from the error event.

5. 処理機能が活性の時は､通信規定はそれに属する不都合ができることを要求する(更なる詳細は下を参照のこと)｡ The protocol request to which the error pertains must have been made when the handler was active (see below for more information).

Proc は次の型に合致する引数と結果を有するべきである: Proc should have arguments and result that match the following type:

    typedef int Tk_ErrorProc(
            ClientData clientData,
            XErrorEvent *errEventPtr);

呼戻しが作成された時､ proc への clientData 假引数は Tcl_CreateErrorHandler に与えられた clientData 引数の複写である｡典型的には､ clientData は不都合を取扱う為に必要な応用譜固有の情報を含むデータ構造を指す｡ ErrEventPtr は X の不都合行事を指す｡ proc 手続函数は整数値を返すべきである｡もし 0 を返す場合は proc は不都合を完全に処理し､不都合について何か他の行動をとる必要はないことを意味する｡もし非零が返される場合､それは proc が不都合を処理できないことを意味する｡ The clientData parameter to proc is a copy of the clientData argument given to Tcl_CreateErrorHandler when the callback was created. Typically, clientData points to a data structure containing application-specific information that is needed to deal with the error. ErrEventPtr is a pointer to the X error event. The procedure proc should return an integer value. If it returns 0 it means that proc handled the error completely and there is no need to take any other action for the error. If it returns non-zero it means proc was unable to handle the error.

もし proc の為に NULL の値が指定された場合､全ての合致する不都合は無視される: これは恰も手続函数が常に 0 を 返す様指定されたと同じ結果を産む｡ If a value of NULL is specified for proc, all matching errors will be ignored: this will produce the same result as if a procedure had been specified that always returns 0.

一つ或はそれ以上の処理機能が特定の不都合に合致する場合､それらは順に起動される｡処理機能は生成と逆順に起動される: 最も最近宣言された処理機能が最初になる｡もし処理機能が 0 を返すと､引続く(古い)処理機能は起動されなくなる｡もしどの処理機能も 0 を返さない場合､ Tk は X の省略時設定不都合処理機能を起動し､それは不都合伝言文を印刷し､算譜を中断する｡もしそれ以外の処理機能が扱えない不都合を処理できる省略時設定処理機能を具備したい場合はそれを最初に宣言されたい｡ If more than more than one handler matches a particular error, then they are invoked in turn. The handlers will be invoked in reverse order of creation: most recently declared handler first. If any handler returns 0, then subsequent (older) handlers will not be invoked. If no handler returns 0, then Tk invokes X's default error handler, which prints an error message and aborts the program. If you wish to have a default handler that deals with errors that no other handler can deal with, then declare it first.

X 説明書は述べている “不都合処理機能は､通信規定の要求を発生したり､入力行事を捜すようなどの様な函数も(直接にも間接にも)表示器上で呼ぶべきではない｡” この制限は Tk_CreateErrorHandler によって宣言された処理機能に適用する; これへの不服従による危険は自己責任である｡ The X documentation states that “the error handler should not call any functions (directly or indirectly) on the display that will generate protocol requests or that will look for input events.” This restriction applies to handlers declared by Tk_CreateErrorHandler; disobey it at your own risk.

Tk_DeleteErrorHandler は以前に作成された不都合処理機能を削除する為に呼ばれるかもしれない｡ handler 引数は不都合処理機能を識別する､又､以前の Tk_CreateEventHandler への呼出しにより返された値であるべきである｡ Tk_DeleteErrorHandler may be called to delete a previously-created error handler. The handler argument identifies the error handler, and should be a value returned by a previous call to Tk_CreateEventHandler.

特定の不都合処理機能が､ Tk_CreateErrorHandler への呼出しと Tk_DeleteErrorHandler への呼び出しの間に生成された通信規定要求から生じた不都合に適用される｡しかし依頼側と中央集中処理側の緩衝の為 proc への実際の呼戻しは､ Tk_DeleteErrorHandler 呼出しの後まで生じないかもしれない｡もし不都合行事が Tk_DeleteErrorHandler 呼出しの前に作られた通信規定要求に属する場合､不都合行事は Tk_DeleteErrorHandler 呼び出しの前に処理される事はない｡この状況が起ると､ Tk は処理機能に関する情報を保存し､処理機能 proc を後に最終的に不都合行事が到着した時に起動する｡もし応用譜が不都合処理機能の削除を望み且つ､全ての関連する不都合は処理されたことを確かに知っている場合､最初に Tk_DeleteErrorHandler を呼び､次に XSync を呼ぶ; それはどの緩衝域にある要求と不都合も流し去るが､ X 中央集中処理との間の通信が要求されるので､出来栄えに不足が残る｡ XSync 呼出しの後､ Tk は XSync 呼出し以前に削除されたどの様な不都合処理機能も呼出さないことを保障する｡ A particular error handler applies to errors resulting from protocol requests generated between the call to Tk_CreateErrorHandler and the call to Tk_DeleteErrorHandler. However, the actual callback to proc may not occur until after the Tk_DeleteErrorHandler call, due to buffering in the client and server. If an error event pertains to a protocol request made just before calling Tk_DeleteErrorHandler, then the error event may not have been processed before the Tk_DeleteErrorHandler call. When this situation arises, Tk will save information about the handler and invoke the handler's proc later when the error event finally arrives. If an application wishes to delete an error handler and know for certain that all relevant errors have been processed, it should first call Tk_DeleteErrorHandler and then call XSync; this will flush out any buffered requests and errors, but will result in a performance penalty because it requires communication to and from the X server. After the XSync call Tk is guaranteed not to call any error handlers deleted before the XSync call.

Tk に就いての不都合処機能の仕組みが適切に働く為に､応用譜が XSetErrorHandler を直接呼ぶ符合命令を含まないことが重要である; 応用譜は Tk_CreateErrorHandler のみを使うべきである｡ For the Tk error handling mechanism to work properly, it is essential that application code never calls XSetErrorHandler directly; applications should use only Tk_CreateErrorHandler.

### KEYWORDS

callback, error, event, handler
Copyright © 1990 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.