AppleScript

< предудущая - содержание - следующая >

Управляющие операторы -- Обработка ошибок

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


[Предыдущая][Содержание][Следующая]
[Титульная страница][Новости][Макинтош][Информатика и ИТ][Об авторе]
Hosted by uCoz