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

         

Функция 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' вызывает обращение к функции обработки ошибки.



Содержание раздела