Урок VBScript №11: Обробка помилок - On Error Resume Next
У даній статті я розповім і покажу, як обробляти помилки в мові VBScript. Розповім про два оператора об'єкта Err: On Error Resume Next (Включає обробку помилок) і On Error GoTo 0 (відключає обробку помилок). Дані оператори дозволяють виконувати певні вирази після певних помилок, а не спостерігати віконце з помилкою і переривання виконання сценарію.Visual Basic Script урізаний в своїх можливостях по обробці помилок на відміну від свого великого брата. Залишилося тільки два оператора об'єкта Err які ми можемо використовувати:
- On Error Resume Next - Включає обробку помилок. Якщо трапляється помилка, то вона не призводить до припинення сценарію, і ми можемо розібратися з нею самі.
- On Error GoTo 0 - Вимикає обробку помилок. Варто за замовчуванням.
Властивості об'єкта Err
- Description - повернеться опис помилки.
- HelpContext - Показує номер топіка відкривається довідки, якщо користувач натисне F1 в віконці повідомлення про помилку. (Якщо є)
- HelpFile - Файл довідки. (Якщо є)
- Number - номер помилки. 0 - відсутність помилки.
- Source - Повертає ім'я додатки, в якому сталася помилка.
Давайте розглянемо найпростіший приклад з обробкою помилки - поділ на 0.
Але в більш складних сценаріях, як брут поштових сервісів (Yandex.ru, Mail.ru) на VBScript. треба перебрати спочатку всі можливі помилки, які вам відомі, а потім про всяк випадок застрахуватися від невідомих помилок.
Особливу увагу треба звернути на те, що оператор On Error Resume Next не дозволяє обробляти синтаксичні помилки.
Методи об'єкта Err
Clear - даний метод дозволяє скидати все властивості і прати інформацію про помилку. Те ж саме відбувається при використанні операторів: On Error Resume Next, Exit Sub, Exit Function.
Raise - Даний метод дозволяє генерувати свою власну помилку часу виконання.
Синтаксис: Err.Rise Number [, Source [, Description [, Helpfile [, Helpcontext]]]]
Всі параметри - це властивості об'єкта Err, які я описав на початку статті. Обов'язковий параметр тільки - номер помилки. Параметри вказуються без дужок!