Опытные программисты должны предусматривать ситуации с появлением ошибок. К примеру, при х = 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' вызывает обращение к функции обработки ошибки.
Назад | Начало | Вперед |