## Tcl8.6.17/Tk8.6.17 Documentation > Tcl Commands > bgerror

### 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

bgerror — 背景処理の不都合処理を起動する命令 Command invoked to process background errors

### 構文 SYNOPSIS

bgerror message

### 説明 DESCRIPTION

Tcl 8.5 版では interp bgerror 命令を運用して､応用譜がその解釈実行機能内の背景処理不都合を処理する命令を解釈実行機能内に登録できるようにした｡Tcl の古い版では､この水準の管理は利用できず､応用譜は､背景処理不都合の処理を解釈実行機能の大域名前空間内で特定の bgerror の名前を持つ命令を生成する事によってのみ管理できた｡以下の説明文では､応用譜がTcl の8.5以前の版との互換性を維持する為に定めるべき bgerror 命令の対話機能の要求事項を記述する｡Tcl 8.5 版以降のみを適用対象とする事を意図した応用符は単に interp bgerror を使用させればよい｡　　　　 Release 8.5 of Tcl supports the interp bgerror command, which allows applications to register in an interpreter the command that will handle background errors in that interpreter. In older releases of Tcl, this level of control was not available, and applications could control the handling of background errors only by creating a command with the particular command name bgerror in the global namespace of an interpreter. The following documentation describes the interface requirements of the bgerror command an application might define to retain compatibility with pre-8.5 releases of Tcl. Applications intending to support only Tcl releases 8.5 and later should simply make use of interp bgerror.

bgerror 命令はTclの組込み命令としては実在しない｡その代り､個別の応用譜や使用者は背景処理不都合を処理したい場合に bgerror 命令を(譬えば Tcl 手続き函数として)定義できる｡　　　 The bgerror command does not exist as built-in part of Tcl. Instead, individual applications or users can define a bgerror command (e.g. as a Tcl procedure) if they wish to handle background errors.

背景処理不都合は行事処理機能や何かの他の応用譜に起因しない命令内で生じる不都合である｡譬えば､ after 命令によって指定された命令を実行している間に生じた不都合は背景処理不都合である｡非-背景処理不都合に関しては､応用符の最高水準の命令符号に届くまで､入子になったTcl 命令評価機能を通して単純に戻され得る｡背景処理不都合が生じると､巻戻しは Tcl 外部函数内で終わり､Tcl に不都合を報告する明確な方法はない｡　　　 A background error is one that occurs in an event handler or some other command that did not originate with the application. For example, if an error occurs while executing a command specified with the after command, then it is a background error. For a non-background error, the error can simply be returned up through nested Tcl command evaluations until it reaches the top-level code in the application; then the application can report the error in whatever way it wishes. When a background error occurs, the unwinding ends in the Tcl library and there is no obvious way for Tcl to report the error.

Tcl が背景処理不都合を検知すると､不都合に関する情報を保存し interp bgerror によって後々の待機行事処理機能として登録された操作子命令を起動する｡省略時設定の操作子命令が順番に bgerror 命令を呼出す｡ bgerror を起動する前に､Tcl は errorInfo と errorCode 変数に不都合が生じたときの値を再保存し､不都合報告文のみを引数として bgerror を起動する｡Tcl は応用譜が bgerror 命令を既に実装しその命令が応用符に検知できる方法で不都合を報告すると仮定する｡Tcl は不都合が生成されない限り､ bgerror 命令によって戻された如何なる結果をも無視する｡　　　 When Tcl detects a background error, it saves information about the error and invokes a handler command registered by interp bgerror later as an idle event handler. The default handler command in turn calls the bgerror command . Before invoking bgerror, Tcl restores the errorInfo and errorCode variables to their values at the time the error occurred, then it invokes bgerror with the error message as its only argument. Tcl assumes that the application has implemented the bgerror command, and that the command will report the error in a way that makes sense for the application. Tcl will ignore any result returned by the bgerror command as long as no error is generated.

bgerror 内部で更なる Tcl 不都合が生じると(譬えば､bgerror 命令は全く生成されてなかった)､ Tcl は不都合文を標準不都合出力に書いて､不都合そのものを報告する｡　　 If another Tcl error occurs within the bgerror command (for example, because no bgerror command has been defined) then Tcl reports the error itself by writing a message to stderr.

背景処理不都合を処理する為に bgerror が起動される前に複数個が累積すると､生じた順に､各不都合毎に１回づつ bgerror が起動される｡但し､ bgerror が break 例外を伴って帰ると､残りのどの不都合も bgerror が呼出されることなく跳び越される｡　　　 If several background errors accumulate before bgerror is invoked to process them, bgerror will be invoked once for each error, in the order they occurred. However, if bgerror returns with a break exception, then any remaining errors are skipped without calling bgerror.

梱包の一部や他の外部函数として他人に使用されることになる符号命令を書く場合､bgerror を避ける様考慮されたい｡その理由は､応用符の作者も bgerror を定義したり､定義している別の符号命令を使ったりしたくなるかもしれないので､貴兄の符号命令との組合わせで不都合を生じることになる｡ If you are writing code that will be used by others as part of a package or other kind of library, consider avoiding bgerror. The reason for this is that the application programmer may also want to define a bgerror, or use other code that does and thus will have trouble integrating your code.

### 用例 EXAMPLE

この bgerror 手続函数はファイルに不都合を日付と伴に追記する｡ This bgerror procedure appends errors to a file, with a timestamp.

    proc bgerror {message} {
        set timestamp [clock format [clock seconds]]
        set fl [open mylog.txt {WRONLY CREAT APPEND}]
        puts $fl "$timestamp: bgerror in $::argv '$message'"
        close $fl
    }

### SEE ALSO

after, errorCode, errorInfo, interp

### KEYWORDS

background error, reporting
Copyright © 1990-1994 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.