catch

ReferenceTOPKeywords

コマンド名

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.