Иллюстрированный самоучитель по MatLab

Конструкция try…catch…end

В MATLAB 6 введена новая конструкция блока вывода ошибок try…catch…end:

try.
Список инструкций
Список инструкций catch.
Список инструкций
...
Список инструкций
end

Эта конструкция выполняет все списки инструкций. Если в каком-то списке до оператора catch появляется ошибка, то выводится сообщение об ошибке, но системная переменная последней ошибки lasterr не меняется. В сообщениях после catch сообщения об ошибке не выводятся.

В следующем примере задано появление ошибки (переменная ааа не определена), после чего выполняется блок try…catch…end:

aaa
??? Undefined function or variable 'aaa'.
try
2+3:
3+4:
2/0: catch
4+5: end:
Warning: Divide by zero.
>> lasterr ans = Undefined function or variable 'aaa'.

Обратите внимание, что в конце блока команда lasterr выводит ее начальное значение. А в другом примере ошибка задана в блоке try…catch…end уже после оператора catch:

>> try
2+3:
3+4;
4+5: catch
5/0:
end:
>> lasterr
ans = Undefined function or variable 'aaa'.

Как нетрудно заметить, на этот раз ошибка в вычислении 5/0 не выводится, а значение lasterr осталось тем, что было изначально.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.