# errcatch

error trapping

## Calling Sequence

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

## Arguments

n

  integer

action, option

  strings

## Description

`errcatch` gives an "action" (error-handler) to be performed when an error of type `n` occurs.

`n` has the following meanings:

if `n``>0`, `n` is the error number to trap;

if `n``<0` all errors are to be trapped.

`action` is one of the following character strings:

"pause"

  a pause is executed when trapping the error. This option is useful for debugging purposes. Use `whereami()` to get information on the current context.

"continue"

  next instruction in the function or exec files is executed, current instruction is ignored. It is possible to check if an error has occurred using the iserror function. Do not forget to clear the error using the errclear function as soon as possible. This option is useful for error recovery. In many cases, usage of `errcatch(n,"continue",..)` can be replaced by the use of execstr function or try control structure.

"kill"

  default mode, all intermediate functions are killed, Scilab goes back to the level 0 prompt.

"stop"

  interrupts the current Scilab session (useful when Scilab is called from an external program).

`option` is the character string `'nomessage'` for killing error message.

To set back default mode, enter `errcatch(-1,"kill")` or similarly `errcatch(-1)`. `errcatch()` is an obsolete equivalent of `errcatch(-1)`.

The `errcatch` actions apply to the current evaluation context (`function`, `exec`, `pause`) and all the sub-levels. A second `errcatch` call in a sub-level hides the initial one for this sub-level. If a second `errcatch` call is made at the same level, the effect of the first one is removed.

When called in the context of a Scilab function or exec the `errcatch` is automatically reset when the function returns.

## Examples

    errcatch(144,"continue")
    2/"foo"
    disp(a) // Without the errcatch, this line would not be executed

    errcatch(-1,"kill") // Come back in the normal mode
    errcatch(144,"pause")
    2/"foo" // Enter in "pause" mode

    errcatch(27,'continue','nomessage')
    b=2/0 // No error message but b will not exist

## See Also

- try
- errclear
- iserror
- whereami
- execstr
- exec
- pause