< предудущая - содержание - следующая >
Управляющие операторы -- Обработка ошибок
Во время выполнения скрипта вполне может произойти "исключительная ситуация". Например, не оказалось файла, который он должен был бы открыть, или скрипт пытается изменить свойства несуществующего объекта, или... Да всего не перескажешь. Кстати, некоторые "ошибки" появляются и при нормальном выполнении операций. К примеру, если пользователь в диалоге "Open File" щелкнет "Cancel". Если не принять специальных мер, во всех таких ситуациях скрипт будет просто прерывать свою работу. Чтобы такого не происходило, в AppleScript предусмотрен особый управляющий оператор:
try
[оператор]... -- "нормальные" операции
on error
[переменная-строка]
[number переменная-целая]
[from переменная-ссылка]
[partial result переменная-список]
[to переменная-класс]
[global переменная [, переменная]... ]
[local переменная [, переменная]... ]
[оператор]...
end try
Он приказывает компьютеру попытаться выполнить некоторые действия (описанные в первой его части), а если попытка заканчивается неудачей — перейти к обработке полученного кода ошибки. При этом обработчик получает исчерпывающую информацию об ошибке:
- строку-сообщение;
- числовой код;
- ссылку на объект, при работе с которым возникла ошибка;
- список промежуточных результатов, полученных к моменту ее возникновения, а также
- ожидаемый класс объекта.
Вот пример обработки «ошибки», когда пользователь отказывается от выбора файла:
try
choose file
set fileName to result
on error errText
display dialog "Ошибка: " & errText &
"\rИспользовать стандартные настройки?"
buttons {"Завершить", "Стандарт"} default button 2
if button returned of result = "Завершить"
error number -128 --прерывание скрипта
else
set fileName to defaultFileName
end if
end try
Обратите внимание: здесь использован специальный оператор — "error". Он позволяет сигнализировать об ошибке, причем мы можем использовать как стандартные коды ошибок MacOS или AppleScript, так и свои собственные. Например, можно написать строку-сообщение по-русски.
|
А вот как можно использовать параметры "from" и "to":
display dialog "Введите число:" default answer ""
try
set number1 to text returned of result as number
-- display dialog возвращает результат типа
-- запись, мы берем из нее только введенный
-- пользователем текст и пытаемся преобразовать
-- его в число
on error from errObj to errClass
display dialog "Введено <<" & errObj &
">>, когда ожидались данные типа " & errClass
set number1 to 0
end try
|