Программирование в Mathcad позволяет осуществлять дополнительную обработку ошибок. Если пользователь предполагает, что выполнение кода в каком-либо месте программного модуля способно вызвать ошибку (например деление на ноль), то эту ошибку можно перехватить с помощью оператора on error. Чтобы вставить его в программу, надо поместить линии ввода в ней в нужное положение и нажать кнопку с именем оператора on error на панели Programming (Программирование). В результате появится строка с двумя ме-стозаполнителями и оператором on error посередине (рис. 6.10).
Рис. 6.10. Вставка оператора перехода по ошибке
В правом местозаполнителе следует ввести выражение, которое должно выполняться
в данной строке программы. В левом — выражение, которое будет выполнено вместо
правого выражения, если при выполнении последнего возникнет ошибка. Приведем
пример применения оператора on error (листинг 6.15) в программном модуле, который
рассчитывает функцию обратного числа значению n. Если n=0, то и присвоенное
значение z=0, поэтому в последней строке программы выполняется правое выражение
расчета i/z. Так происходит при расчете f (-2). Если попытаться вычислить f
(0) как в конце листинга, то выполнение программы, заложенной в f (n), вызовет
ошибку деления на ноль в последней строке программы. Соответственно, вместо
выражения справа от оператора on error будет выполнено левое выражение, присваивающее
функции f(n) строковое значение "user error: cannot divide by zero"
(пользовательская ошибка: деление на ноль невозможно). Конечно, этой строке
можно присвоить и текст на русском языке.
Листинг 6.15. Перехват ошибки деления на ноль
Рис. 6.11. Перехват ошибки деления на ноль
Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией error(S). Она приводит к генерации ошибки в обычной для Mathcad форме с сообщением s. Пример усовершенствования листинга 6.15 для такого стиля обработки ошибки деления на ноль показан на рис. 6.11.
Обратите внимание, что сделанные изменения свелись к помещению текста сообщения об ошибке в аргумент функции error.