Конструкция try...catch...end
В MATLAB 6 введена новая конструкция блока вывода ошибок try...catch...end:
try.
Список инструкций
Список инструкций catch.
Список инструкций
...
Список инструкций
end
Эта конструкция выполняет все списки инструкций. Если в каком-то списке до оператора catch появляется ошибка, то выводится сообщение об ошибке, но системная переменная последней ошибки lasterr не меняется. В сообщениях после catch сообщения об ошибке не выводятся.
В следующем примере задано появление ошибки (переменная ааа не определена), после чего выполняется блок try...catch...end:
ааа
??? Undefined function or variable 'ааа'.
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 осталось тем, что было изначально.