Реализация конструкции try-finally на VBScript

Материал из GedeminWiki
Перейти к: навигация, поиск

Грамотно написанный программный код должен заботиться о высвобождении выделенных ресурсов по окончании их использования даже в случае аварийного завершения функции или процедуры. В Делфи мы имеем конструкцию try-finally, которая гарантирует, что код в секции finally будет выполнен в любом случае:

 ...
 // выделение ресурса
 try
   ...
   // использование ресурса
   ...
 finally
   // высвобождение ресурса
 end;
 ...

В языке VBScript такая конструкция отсутствует, а обработка ошибок с помощью On Error Resume Next/On Error GoTo 0 весьма трудоемка. Как быть? На помощь приходит свойство экземпляров классов VBScript, которые автоматически высвобождаются по выходу из соответствующей области видимости. Вспомогательный класс TCreator уже долгое время используется для уничтожения объектов по завершении кода функции или процедуры. Его метод GetObject создает объект с помощью вызова функции Designer.CreateObject и сохраняет ссылку на созданный объект во внутреннем списке. По выходу из кода, объект TCreator уничтожается, при этом выполняется его деструктор, который просматривает список ранее созданных объектов и вызывает Designer.DestroyObject для каждого из них.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты