## Tcl8.6.17/Tk8.6.17 Documentation > Tcl C API > Panic

### 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
    Tcl_Panic, Tcl_PanicVA, Tcl_SetPanicProc — 致命的な不都合を報告して異常終了する　　 report fatal error and abort
  SYNOPSIS
    #include <tcl.h>
    void
    Tcl_Panic(format, arg, arg, ...)
    void
    Tcl_PanicVA(format, argList)
    void
    Tcl_SetPanicProc(panicProc)
  引数 ARGUMENTS
    const char* format (入力in)
    arg (入力in)
    va_list argList (入力in)
    Tcl_PanicProc *panicProc (入力in)
  説明 DESCRIPTION
  SEE ALSO
  KEYWORDS

### NAME

Tcl_Panic, Tcl_PanicVA, Tcl_SetPanicProc — 致命的な不都合を報告して異常終了する　　 report fatal error and abort

### SYNOPSIS

#include <tcl.h>
void
Tcl_Panic(format, arg, arg, ...)
void
Tcl_PanicVA(format, argList)
void
Tcl_SetPanicProc(panicProc)

### 引数 ARGUMENTS

const char* format (入力in)
  printf 形式の書式文字列｡　 A printf-style format string.

arg (入力in)
  書式化文字列に合致する引数｡　 Arguments matching the format string.

va_list argList (入力in)
  書式化文字列に合致する引数の引数リスト｡ va_start を使って初期化され､且つ va_end を用いて解消されねばならない｡　 An argument list of arguments matching the format string. Must have been initialized using va_start, and cleared using va_end.

Tcl_PanicProc *panicProc (入力in)
  致命的不都合伝言文を報告し異常終了する手続函数｡　 Procedure to report fatal error message and abort.

### 説明 DESCRIPTION

Tcl 外部函数は､その内部データ構造が整合性のない状態であることを検出した時､又は C 手続函数がその取扱説明書と異なる方法で呼びだされたことを検出した時､不都合を記述する伝言文を表示し処理を中断する為に Tcl_Panic を呼ぶ｡ format 引数は､残りの引数 arg を函数の printf 一族による書式化規則に沿って如何に不都合伝言文に変換するかを記述した書式を記述している｡同じ書式化規則は組込みの Tcl の format 命令にも使われている｡ When the Tcl library detects that its internal data structures are in an inconsistent state, or that its C procedures have been called in a manner inconsistent with their documentation, it calls Tcl_Panic to display a message describing the error and abort the process. The format argument is a format string describing how to format the remaining arguments arg into an error message, according to the same formatting rules used by the printf family of functions. The same formatting rules are also used by the built-in Tcl command format.

新しく組込まれた Tcl 外部函数 Tcl_Panic は書式化された不都合伝言文を処理系の標準不都合ファイルに印刷し､処理を終了する為に abort を呼出す｡ Tcl_Panic は制御を返さない｡ Windows 上では､不具合処理譜が実行されている時､書式化された不都合伝言文は不具合処理譜に送られる｡もし窓実行譜が標準不都合通信路を所有していない時(譬えば､ wish.exe)､系質問箱が混乱の伝言文を表示する為に使われる｡ In a freshly loaded Tcl library, Tcl_Panic prints the formatted error message to the standard error file of the process, and then calls abort to terminate the process. Tcl_Panic does not return. On Windows, when a debugger is running, the formatted error message is sent to the debugger instead. If the windows executable does not have a stderr channel (e.g. wish.exe), then a system dialog box is used to display the panic message.

Tcl_SetPanicProc は Tcl_Panicの振舞いを修正する為に使われ得る｡ panicProc 引数は型 Tcl_PanicProc と合致すべきである: Tcl_SetPanicProc may be used to modify the behavior of Tcl_Panic. The panicProc argument should match the type Tcl_PanicProc:

    typedef void Tcl_PanicProc(
            const char *format,
            arg, arg,...);

Tcl_SetPanicProc から帰った後､将来のどの Tcl_Panic 呼び出しも format と arg 引数を渡して panicProc を呼出す｡ panicProc は Tcl 外部函数､或は他の Tcl 外部函数を呼ぶかもしれない外部函数を呼出させることを避ける､外部函数を呼ぶ外部函数に入る､理由は元の Tcl_Panic 呼出しは Tcl 外部函数は信頼できる操作の状態ではないことを示しているので｡ 　　　　　　　　　　 After Tcl_SetPanicProc returns, any future calls to Tcl_Panic will call panicProc, passing along the format and arg arguments. panicProc should avoid making calls into the Tcl library, or into other libraries that may call the Tcl library, since the original call to Tcl_Panic indicates the Tcl library is not in a state of reliable operation.

Tcl_SetPanicProc の使用は応用譜やOSにより適した方法による表示又は報告される不都合伝言文の準備である｡ The typical use of Tcl_SetPanicProc arranges for the error message to be displayed or reported in a manner more suitable for the application or the platform.

Tcl_Panic の第１の呼出し手は Tcl 外部函数の手続函数であるが､ Tcl_Panic は公的函数であり､処理を中断し､Tcl からの混乱伝言文が表示されるのと同じ方法で混乱伝言文を表示させる様な､どのような拡張や応用譜からも呼出され得る｡ Although the primary callers of Tcl_Panic are the procedures of the Tcl library, Tcl_Panic is a public function and may be called by any extension or application that wishes to abort the process and have a panic message displayed the same way that panic messages from Tcl will be displayed.

Tcl_PanicVA は変動個数の引数を取る代りに引数リストをとることを除いて Tcl_Panic と同じである｡ Tcl_PanicVA is the same as Tcl_Panic except that instead of taking a variable number of arguments it takes an argument list.

### SEE ALSO

abort, printf, exec, format

### KEYWORDS

abort, fatal, error