Функция lasterr
и обработка ошибок
Опытные программисты
должны предусматривать ситуации с появлением ошибок. К примеру, при
х =
0
выражение
sin(x)/x =
0/0 = 1 и правильным решением было бы вместо его
вычисления использовать значение 1.
В данном простом
примере приводится функция sdO, исключающая вычисление
sin(x)/x
при
х
=
0:
function
f=sdO(x)
if x==0 f=1;
else f=sin(x)/x;
end
return
При этом вычисления
пройдут корректно при любом
х:
»
sd0(l)
ans=
0.8415
»sd0(0)
ans =
1
Для вывода
сообщения о последней произошедшей ошибке служит функция lasterr (см. пример
ниже):
»
ааа
???
Undefined function or variable 'aaa'.
»
2+3
ans =
5
»
1/0
Warning:
Divide by zero,
ans =
Inf
»
lasterr
ans = Undefined function or variable 'aaa'.
Как нетрудно
заметить, функция lasterr возвращает текстовое сообщение, следующее за знаками
??? сообщения об ошибке.
В общем случае
программы могут содержать
обработчики ошибок,
направляющие ход вычислений
в нужное русло, даже если появляется ошибка. Но для этого требуются средства
индикации и обработки ошибок. Основными из них являются функции eval и l asterr.
О функции lasterr уже говорилось, а функция eval (' try', 'catch') в отличие
от ранее рассмотренной формы (урок 18) имеет два входных аргумента. Один из
них — это строчное выражение, которое преобразуется в исполняемую форму и выполняется
при отсутствии ошибки. Если же происходит ошибка, то строка ' catch' вызывает
обращение к функции обработки ошибки.
Содержание раздела