ページの先頭行へ戻る
Systemwalker Centric Manager API・スクリプトガイド
FUJITSU Software

6.3.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
}

実行結果/出力形式

なし