Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語 -

Please note that the recommended version of Scilab is 6.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.

Справка Scilab >> Scilab > Управление ошибками > errcatch

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 — начало блока try в управляющей структуре try-catch
  • errclear — очистка ошибки
  • iserror — проверка возникновения ошибки
  • whereami — выводит на экран текущую инструкцию дерева вызова
  • execstr — исполняет Scilab-код, заданный в строках
  • exec — исполнение файла-сценария
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 02 14:01:01 CEST 2014