# errcatch

перехват ошибок

## Последовательность вызова

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

## Аргументы

n

  целое число

action, option

  строковые значения

## Описание

`errcatch` указывает действие `"action"` (реакцию на ошибку), которое будет выполнено в случае возникновения ошибки типа `n`.

`n` имеет следующие значения:

если `n``>0`, то `n` является номером ошибки, которую требуется перехватить;

если `n``<0`, то будут перехватываться все ошибки.

`action` может быть одной из следующих символьных строк:

"pause"

  пауза, выполняемая во время перехвата ошибки. Эта опция полезна в целях отладки. Используйте `whereami()` для получения информации о текущем контексте.

"continue"

  будет выполняться следующая инструкция в функции либо будут исполнены исполняемые файлы, текущие инструкции будут игнорироваться. Можно проверить произошла ли ошибка с помощью функции iserror. Не забудьте очистить ошибку с помощью функции errclear как можно скорее. Эта опция полезна для обнаружения ошибок. Во многих случаях использование `errcatch(n,"continue",..)` может быть заменено использованием функции execstr или структуры управления try.

"kill"

  режим по умолчанию; все промежуточные функции уничтожаются, Scilab возвращается на уровень 0 командной строки.

"stop"

  прерывает текущую сессию Scilab (полезна, когда Scilab вызван из внешней программы).

`option` символьная строка `'nomessage'` для уничтожения сообщения об ошибке.

Для возврата в режим по умолчанию введите `errcatch(-1,"kill")` или, аналогичное, `errcatch(-1)`. `errcatch()` является устаревшим эквивалентом для `errcatch(-1)`.

Действия `errcatch` применимы в контексте текущего выполнения (`function`, `exec`, `pause`) и всех подуровней. Второй вызов `errcatch` на подуровнях скрывает исходный вызов для этого подуровня. Если второй вызов `errcatch` сделан на том же самом уровне, то действие первого вызова удаляется.

При вызове в контексте функции Scilab или `exec` `errcatch` автоматически сбрасывается при выходе из функции.

## Примеры

    errcatch(144,"continue")
    2/"foo"
    disp(a) // Без перехвата ошибки эта строка не будет выполнена

    errcatch(-1,"kill") // Возвращение обратно в нормальный режим
    errcatch(144,"pause")
    2/"foo" // Вход в режим "пауза"

    errcatch(27,'continue','nomessage')
    b=2/0 // Сообщения об ошибке нет, но b не будет существовать

## Смотрите также

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