понедельник, 4 августа 2008 г.

Обработка исключительных ситуаций в PowerShell

Оригинал статьи здесь.

Материал wikipedia об исключительных ситуациях при выполнении программ здесь

Поскольку PowerShell основана на концепции .Net, все возникающие и обрабатываемые исключения выполнения являются частью .Net. Если при выполнении метода .Net происходит ошибка, которая не может быть обработана внутри самого метода, то возникает исключительная ситуация, информация о которой передается в участок кода, откуда был вызван метод. В .Net для обработки исключительных ситуаций используется объект System.Exception.
Для обработки исключений в PowerShell используются инструкции Throw и Trap.
Инструкция Throw используется для "проталкивания" информации об исключении вызывающему методу. Причем в отличии от .Net, в PowerShell можно "проталкивать" не только исключения, но и результаты выполнения команд.
Например:
Throw (new-object IO.DirectoryNotFoundException) - создаст System.Exception "Попытка доступа к пути, отсутствующему на диске".
Throw (ls *.*) - Создаст исключительную ситуацию System.Exception со свойством Message, установленным в результат исполнения команды ls *.*

Для перехвата исключительной ситуации используется инструкция Trap. Переменная $ErrorActionPrefrences определяет, будут ли инструкции Trap обрабатываться.




Комментариев нет: