В script, когда ошибка командной строки или другого исполняемого файла выходит из строя, существует ли механизм try/catch для восстановления после этих ошибок? Я не сталкивался с одним в документации.
У Windows Powershell есть механизм Try/Catch или другой механизм обработки ошибок?
Ответ 1
Вы используете блок Trap [exception-type] {}
перед кодом, для которого вы хотите обрабатывать исключения для.
Ответ 2
Я написал об этом в моей колонке TechNet Magazine (technetmagazine.com, если вам интересно).
Во-первых, PowerShell v2 будет иметь стандартный Try... Catch, который замечательный.
Существующая оболочка (v1) имеет поддержку конструкций trap {}. Они должны быть определены до возникновения исключения. Кроме того, большинству командлетов требуется параметр -EA "STOP", чтобы они могли генерировать исключение с помощью trappable. Ловушки могут быть определены в любой области и будут "пузыряться" до тех пор, пока они не попадут в ловушку или пока не попадут в глобальную область (оболочку).
В конце ловушки выполните Continue, чтобы вернуться к следующей строке кода в той же области, что и ловушка, или выполните Break, чтобы покинуть текущую область действия и отбросить исключение.
Ответ 3
Здесь кто-то (Адам Вейгерт), который реализовал try/catch/наконец, используя powershell. Я использую это вместо встроенной ловушки. Кажется более естественным.
http://weblogs.asp.net/adweigert/archive/2007/10/10/powershell-try-catch-finally-comes-to-life.aspx