2012-01-21 5 views

答えて

3

errorコマンド自体は、Tcl結果以外の場所には何も書き込まれません。それは何ですか実際にはは例外(タイプ "エラー"; TCL_ERRORはC APIレベル)をスローします。 "Error: "という接頭辞が付いたコードは、標準的なフォールバックハンドラにすぎませんが、メインスクリプトでcatchを使用して結果をトラップし、その処理方法を決定することで独自のコードを使用することができます(8.6以降はtry …より簡単です特定の問題をトラップするときに使用する)。

if {[catch {source realscript.tcl} msg]} { 
    # Caught an error! 
    puts stderr "Oh noes! Teh errorz iz atakkin! $msg" 
    puts stderr $::errorInfo 
    exit 1 
} 

OK、あなたは8.5を使用している場合は、そのを書くために、わずかに良い方法がある:

if {[catch {source realscript.tcl} msg resultdict]} { 
    # Caught an error! 
    puts stderr "Oh noes! Teh errorz iz atakkin! $msg" 
    puts stderr [dict get $resultdict -errorinfo] 
    exit 1 
} 

あなたがかもしれないまたは結果辞書内の他の興味深いものがたくさんがあります興味がないかもしれない。

関連する問題