ページのトップに戻る
Systemwalker Operation Manager  リファレンスマニュアル

16.2.3 catch(スクリプト行を実行し処理例外をトラップする)

機能説明

スクリプト行を実行して処理例外をトラップします。

スクリプト実行時の処理例外とは、スクリプトの処理がそこで打ち切られ、プロセス自体が強制終了されるエラーです。このようなエラーが発生する例として、実行中のスクリプトに文法エラーや値未設定の変数に対する変数置換の他に、ファイルオープン時のエラー(openコマンド)や、実行プロセスの終了コードが0以外(execコマンド)など、実行時の条件によって発生するものがあります。

catchコマンドはこのような処理例外の発生時に、独自のリカバリ処理を行い、スクリプトのプロセスが終了するのを防ぐために使用します。

記述形式

catch {script} 【varname

オプション

{script}

実行するスクリプトコマンド部分です。改行またはセミコロンで区切ることにより複数のコマンドが記述できます。

varname

処理例外が発生した場合にその原因を示すエラーテキストを格納する変数名です。省略時は、エラーテキストは格納されません。

復帰値

0:

処理例外は発生しませんでした

0以外:

処理例外が発生しました。

この場合、グローバル変数errorCodeに、詳細情報として以下の値が格納されます。

  • スクリプトコマンドexecで実行したコマンドの終了コードが“0”以外で終了した場合

    CHILDSTATUS pid exitcode

    Pid
    【Windows版】
      ここに入る数字は意味を持ちません。
    【UNIX版】
      実行したコマンドのプロセスID
    exitcode
    実行したコマンドの終了コード 
  • スクリプトコマンドexecで実行したコマンドがシグナルにより強制終了された場合

    CHILDKILLED pid sigName msg

    Pid
    【Windows版】
      ここに入る数字は意味を持ちません。
    【UNIX版】
      実行したコマンドのプロセスID 
    SigName
    実行したコマンドに送られたシグナル名
    Msg
    詳細メッセージ
  • スクリプトコマンドexecで実行したコマンドがシグナルにより一時停止された場合

    CHILDSUSP pid sigName msg

    Pid
    【Windows版】
      ここに入る数字は意味を持ちません。
    【UNIX版】
      実行したコマンドのプロセスID 
    SigName
    プロセスに送られたシグナル名
    Msg
    詳細メッセージ
  • スクリプトコマンドexprで算術エラーが発生した場合

    ARITH errName msg

    ErrName
    エラー内容
    Msg
    詳細メッセージ
  • システムコールでエラーが起きた場合

    POSIX errName msg

    ErrName
    エラー内容
    Msg
    詳細メッセージ
  • エラーとともに返されるメッセージ以外の情報がない場合

    NONE

使用例

ファイルを読み込み用にオープンし、失敗した場合は標準入力からの読み込みをする。

if {[catch {
      set file [open data.txt r]
}]} {
      set file ”stdin”
}
gets $file buf
if {$file != ”stdin”} {
      close $file
}

実行結果/出力形式

なし