Visual Basic Script


Windows Script Host (WSH) - обработка исключений - часть 2


Попытка прочитать параметр из реестра вынесена в отдельную функцию. Если происходит ошибка - функция возвращает код ошибки (Err.Number) и источник (Err.Source). В операторе if мы проверяем та ли это ошибка, что нам нужна и если это именно так, значит параметр не удалось прочитать по причине его отсутствия, о чем нас честно и предупреждают в появившемся сообщении. При этом скрипт корректно отрабатывает до конца. Если же ошибки не возникло, мы спокойно прочитываем значение нужного нам параметра.

Обратите внимание на объект Err. Это стандартный объект VBScript, содержащий информацию о так называемых run-time errors (ошибках времени выполнения). Свойство Source указывает на источник ошибки (в сообщении на рисунке это последняя строка). Метод Clear очищает свойства объекта, удаляя сведения об ошибке. Помимо Source и Clear у объекта есть и другие свойства и методы, но реально может понадобиться, пожалуй, свойство Number и Description. Number возвращает код произошедшей ошибки, а Description ее описание. Измените в скрипте строку

Perem = "Параметр не существует"

на

Perem = "Ошибка " & Err.Number & ". " Err.Description

Во время выполнения скрипта появится сообщение: "Ошибка -2147024894. Не удается открыть для чтения раздел реестра "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Test"". Это большое отрицательное число и есть код ошибки. При обработке исключений можно пользоваться и номерами ошибок.

Почему для объяснения работы с исключениями я объяснял все примеры на чтении данных из реестра? Во-первых, работа с реестром в WSH одна из наиболее часто встречаемых задач, во-вторых, другие ошибки (например, попытка подмапировать сетевой диск на уже существующую букву, попытка открытия несуществующего файла и т.п.) могут быть обработаны другими способами (при открытии файла можно сперва проверить его наличие с помощью метода FileExists объекта fso), в то время как проверка наличия какого-либо параметра в реестре отсутствует в принципе. Поэтому вопросы обработки исключений при работе с реестром наиболее актуальны.




Начало  Назад  Вперед