перехват ошибок
errcatch(n [,'action'] [,'option']) errcatch()
целое число
строковые значения
errcatch
указывает действие "action"
(реакцию на ошибку), которое будет выполнено в случае возникновения ошибки типа
n
.
n
имеет следующие значения:
если n
>0
, то n
является номером ошибки, которую
требуется перехватить;
если n
<0
, то будут перехватываться все ошибки.
action
может быть одной из следующих символьных строк:
пауза, выполняемая во время перехвата ошибки. Эта опция полезна в целях отладки. Используйте whereami()
для получения информации о текущем контексте.
будет выполняться следующая инструкция в функции либо будут исполнены исполняемые
файлы, текущие инструкции будут игнорироваться. Можно проверить произошла ли ошибка с
помощью функции iserror. Не забудьте очистить ошибку с
помощью функции errclear как можно скорее. Эта опция
полезна для обнаружения ошибок. Во многих случаях использование
errcatch(n,"continue",..)
может быть заменено использованием
функции execstr или структуры управления
try.
режим по умолчанию; все промежуточные функции уничтожаются, Scilab возвращается на уровень 0 командной строки.
прерывает текущую сессию 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 не будет существовать | ![]() | ![]() |
Version | Description |
5.5.2 | errcatch was removed after Scilab 5.5.2. |