Взято из здесь
$source = "ftp://ftp.microsoft.com/ResKit/win2000/dureg.zip"
$target = "c:\temp\dureg.zip"
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($source, $target)
Работает для меня
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 будет вызываться, когда вновь созданный экземпляр выходит за пределы области видимости. Это происходит либо тогда, когда интерпертер достигает оператора 'end with', либо когда стек вызовов раскручивается из-за ошибки. Это менее привлекательно, чем собственный подход Python, но он работает довольно хорошо и не слишком уродлив
Для обработки ошибок верхнего уровня вы можете использовать ту же технику. На этот раз не используйте оператор with, а создайте глобальный экземпляр обработчика ошибок. Помните, что объект ASPError, предоставленный server.getLastError (), не совпадает с объектом ошибки vbscript и доступен только после того, как 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
<% On Error Resume Next %>
If Err.number <> 0 then 'do other stuff
К сожалению, Global.ASA предоставляет только методы Application_OnStart, Application_OnEnd, Session_OnStart и Session_OnEnd
. Нет обработки ошибок.
Самое близкое, что вы можете получить (AFAIK), - это использование функции Custom Errors
в IIS, чтобы указать на другой файл или URL-адрес для обработки ошибки.
На мой взгляд, тоже много хлопот. Это отсутствующая функция, которая заставляет меня переносить некоторые веб-сайты только для того, чтобы быть уверенным в том, что сайт работает без ошибок.
Я сопоставляю страницу 500 ошибок в IIS с настраиваемой страницей обработки ошибок .asp. Затем эта страница использует Server.GetLastError для получения последней ошибки, отправьте мне электронное письмо с подробностями об ошибке, строке запроса, переменных сервера и т. Д. Затем она отображает дружественное сообщение пользователю.