catch- スクリプトを実行し、そのエラーを捕捉します。
catch script? varName?
catch コマンドはコマンドの実行がエラーによって中断されることを防ぎます。
catch はTclインタープリタを再帰的に呼び出しscript を実行させます。script
が実行している間に発生した全てのエラーを報告せずに正常に戻ります。
scriptがエラーを出した場合、catch は例外を示すリターンコード(
コード値の定義はtcl.hを参照 )として0以外の整数値を返します。 varName
が指定された場合、scriptがインタープリタで実行された時に出たエラーメッセージがvarNameで指定した変数に設定されます。
scriptでエラーが発生していない場合、catch は0(TCL_OK)
を返し、scriptからの戻り値を変数に設定します。
注意すべきなのは、 catch がbreak 、
continue と error によって生成された例外を含めて全ての例外を捕えることです。捕えられない唯一のエラーは、該当スクリプトがコンパイルされる時に発見される構文エラーです。これはcatch
コマンドが実行時のエラーしか捕えないからです。 catch
文がコンパイルされるとき、スクリプトもコンパイルされ、全ての構文エラーがTclエラーとして発生します。
catch コマンドは、 if に使ってスクリプトを分岐させることができます。
if { [catch {open $someFile w} fid] } {
puts stderr "Could not open $someFile for writing\n$fid"
exit 1
}
catch コマンドはコンパイルされる時点での構文エラーを捕えません。
下記のproc fooが最初に呼び出されるときでボディがコンパイルされる時点で、Tcl
エラーが生成されます。
proc foo {} { catch {expr {1 +- }} }
proc foo {} {
catch {expr {1 +- }}
}
error, break, continue
catch, error
Copyright © 1993-1994 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.
|