Ответ 1
try:
some code that can raise an error
except:
do error handeling stuff
finally:
clean up, close files etc
Можно эмулировать в vbscript следующим образом:
class CustomErrorHandler
private sub class_terminate
if err.number > 0 then
do error handeling stuff
end if
clean up, close files etc
end sub
end class
with new CustomErrorHandler
some code
...
end with
Как это работает? Метод "class_terminate" будет вызываться, когда вновь созданный экземпляр выходит за рамки. Это происходит, когда интерпертер попадает в оператор "конец с" или когда callstack разматывается из-за ошибки. Он менее симпатичный, чем нативный подход к python, но он работает достаточно хорошо и не уродлив.
Для обработки ошибок верхнего уровня вы можете использовать ту же технику. На этот раз не используйте оператор with, но создайте глобальный экземпляр вашего обработчика ошибок. Помните, что объект ASPError, предоставленный server.getLastError(), не совпадает с объектом vbscript err и доступен только после того, как IIS выполнил свой server.transfer с обработчиком ошибок 500: 100 и вернулся на вашу страницу, чтобы собрать мусор. Обработчик примера:
class cDebugger
public sub do_debug
' print debug data here
end sub
public sub class_terminate
if server.getlasterror().Number <> 0 then
response.clear
call do_debug
end if
end sub
end class