# errcatch

エラーの捕捉

## 呼出し手順

    errcatch(n [,'action'] [,'option'])
                errcatch()

## パラメータ

n

  整数

action, option

  文字列

## 説明

`errcatch` は, `n`型のエラーが発生した時に 実行される "処理" (エラーハンドラ)を指定します, `n` は以下の意味を有します:

`n>0`の場合, `n` は 捕捉するエラー番号となります.

`n<0` の場合,全てのエラーが捕捉されます.

`action` は以下の文字列のどれかとなります:

"pause"

  誤差を捕捉した際に pause が実行されます. このオプションはデバッグの際に有用です. カレントのコンテキストで情報を取得するには `whereami()`を使用してください.

"continue"

  関数または実行ファイルないの次の命令が実行され, カレントの命令は無視されます. `iserror`関数により, エラーが発生したかどうかを調べることが可能です.できるだけ早く `errclear`関数によりエラーをクリアすることを 忘れないようにしてください. このオプションはエラーからの回復の際に有用です. 多くの場合, execstr 関数または try制御構造を使用することにより `errcatch(n,"continue",..)`を 置換することができます.

"kill"

  デフォルトのモードであり,全ての実行中の関数の実行が破棄され, Scilabの処理はレベル0プロンプトに戻ります.

"stop"

  カレントのScilabセッションを中断します(Scilabが外部プログラムからコールされた時に有用).

`option` は中断時のエラーメッセージである 文字列 `'nomessage'` です.

デフォルトモードに戻すためには, `errcatch(-1,"kill")`または `errcatch(-1)` と入力してください. `errcatch()` は以前使用されていた `errcatch(-1)` と 等価です.

`errcatch`のアクションはカレントの評価コンテキスト (function, exec, pause) およびサブレベル全体に適用されます. あるサブレベル内で`errcatch` を2回コールすると このサブレベルでの最初のコールが隠蔽され, 最初の関数コールの効果は削除されます.

Scilab関数または exec のコンテキスト内でコールされた場合, `errcatch`は,関数のリターンの時に自動的にリセットされます.

## 参照

- try
- errclear
- iserror
- whereami
- execstr