Не секрет, что сценарии и другие программы со временем сталкиваются с проблемными ситуациями: файл отсутствует в ожидаемом месте, или пользователь ввел неверные данные, или… этот список можно продолжать до бесконечности. Сценарий можно сделать таким, чтобы он сохранял работоспособность при возникновении подобных проблем, воспользовавшись для этого свойством VBScript, которое называется обработкой ошибок. Обычно, если оператор VBScript или объект столкнутся с проблемой, WSH просто выводит сообщение об ошибке и останавливает выполнение сценария, не завершив задуманной работы. Обработка ошибок позволяет заставить VBScript проигнорировать ошибки и продолжить выполнение сценария. Это возлагает на вас обязанности самостоятельной проверки возникновения ошибок.
Оператор возобновления выполнения при ошибке — on error resume next, предписывает интерпретатору VBScript продолжить выполнение сценария, если какой-нибудь оператор столкнулся с ошибкой. При использовании этого оператора можно проверить значение встроенного свойства err. number, чтобы узнать о существовании ошибки. Если ошибка действительно случилась, это свойство принимает ненулевое значение. Значением свойства err. description является строка, объясняющая, что именно произошло не так, как надо. Восстановить обычное поведение, при котором выполнение сценария при возникновении ошибки прекращается, можно с помощью оператора on error goto 0.
В большинстве случаев нужно давать возможность VBScript отлавливать ошибки и прекращать выполнение сценария, поскольку большинство ошибок сценария происходит по причине реальных просчетов, о которых нужно знать, чтобы иметь возможность от них избавиться. Обработку ошибок следует использовать только для защиты того оператора, о котором известно, что его отказ произойдет, скорее всего, по независящим от вас обстоятельствам. В таком случае следует придерживаться следующей схемы. При возникновении ошибки эта последовательность операторов сценария устанавливает значение переменной failed в True. (Этот результат должен быть записан до выполнения оператора on error goto 0, потому что любой оператор on error сбрасывает информацию.)