Конструкция 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 осталось тем, что было изначально.