РАЗДЕЛ
    about_Throw

КРАТКОЕ ОПИСАНИЕ
    Описание ключевого слова Throw, генерирующего ошибку с 
    завершением работы.

ПОЛНОЕ ОПИСАНИЕ
    Ключевое слово Throw вызывает ошибку с завершением работы. 
    Ключевое слово Throw можно использовать для остановки обработки 
    команды, функции или скрипта. 

    Например, ключевое слово Throw можно использовать в блоке скрипта 
    инструкции If для отклика на условие или в блоке Catch инструкции 
    Try-Catch-Finally. Ключевое слово Throw можно использовать и при 
    декларировании параметров, чтобы сделать параметр функции 
    обязательным. 

    Ключевое слово Throw может выводить любой объект, в том числе 
    строку сообщения для пользователя или объект, вызвавший ошибку. 


 СИНТАКСИС
    Ключевое слово Throw имеет следующий синтаксис:

        throw [<expression>]


    Выражение в синтаксисе Throw является необязательным. Если 
    ключевое слово Throw не входит в блок Catch и не включает 
    выражение, оно генерирует ошибку ScriptHalted.

        C:\PS> throw

        ScriptHalted
        At line:1 char:6
        + throw <<<<
            + CategoryInfo          : OperationStopped: (:) [], RuntimeException
            + FullyQualifiedErrorId : ScriptHalted


    Если ключевое слово Throw используется в блоке Catch без 
    выражения, оно выводит текущее исключение RuntimeException. 
    Дополнительные сведения см. в разделе about_Try_Catch_Finally.


 ИСПОЛЬЗОВАНИЕ КЛЮЧЕВОГО СЛОВА THROW ДЛЯ СТРОКИ
    Необязательным выражением в составе блока Throw может быть 
    строка, как показано в следующем примере: 

        C:\PS> throw "Это ошибка."

        Это ошибка.
        В строке:1 знак:6
        + throw <<<< "Это ошибка."
            + CategoryInfo          : OperationStopped: (This is an error.:String) [], RuntimeException  
            + FullyQualifiedErrorId : Это ошибка.


 ИСПОЛЬЗОВАНИЕ КЛЮЧЕВОГО СЛОВА THROW ДЛЯ ДРУГИХ ОБЪЕКТОВ

    Выражение также может являться объектом, который выводит объект,
    соответствующий процессу PowerShell, как показано в следующем примере.

        C:\PS> throw (get-process powershell)

        System.Diagnostics.Process (powershell)
        At line:1 char:6
        + throw <<<<  (get-process powershell)
            + CategoryInfo          : OperationStopped: (System.Diagnostics.Process (powershell):Process) [], 
        				RuntimeException
            + FullyQualifiedErrorId : System.Diagnostics.Process (powershell)

    Свойство TargetObject объекта ErrorRecord в автоматической 
    переменной $error можно использовать для изучения ошибки.


        C:\PS> $error[0].targetobject

        Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName                                                            
        -------  ------    -----      ----- -----   ------     -- -----------                                                            
            319      26    61016      70864   568     3.28   5548 powershell 
   

    Также с помощью ключевого слова Throw может выводиться объект 
    ErrorRecord или исключение платформы Microsoft.NET Framework. В следующем 
    примере ключевое слово Throw используется для вывода объекта 
    System.FormatException.

        C:\PS> $formatError = new-object system.formatexception

        C:\PS> throw $formatError

        Формат одного из идентифицированных элементов неверен.
        В строке:1 знак:6
        + throw <<<< $formatError
            + CategoryInfo          : OperationStopped: (:) [], FormatException 
	    + FullyQualifiedErrorId : Формат одного из идентифицированных элементов неверен.


 ВОЗВРАЩАЕМАЯ ОШИБКА
    Ключевое слово Throw может генерировать объект ErrorRecord. 
    Свойство Exception объекта ErrorRecord содержит объект 
    RuntimeException. Остальная часть объекта ErrorRecord и объекта 
    RuntimeException меняются в зависимости от объекта, выводимого 
    ключевым словом Throw.

    Объект RunTimeException заключается в объект ErrorRecord, а 
    объект ErrorRecord автоматически сохраняется в автоматической 
    переменной $Error


 ИСПОЛЬЗОВАНИЕ КЛЮЧЕВОГО СЛОВА THROW ДЛЯ СОЗДАНИЯ ОБЯЗАТЕЛЬНОГО ПАРАМЕТРА
    Ключевое слово Throw можно использовать для превращения параметра 
    функции в обязательный. 

    Это альтернатива использованию параметра Mandatory ключевого 
    слова Parameter. При использовании параметра Mandatory система 
    требует у пользователя ввести обязательное значение параметра. 
    При использовании ключевого слова Throw команда прекращает работу 
    и выводит запись об ошибке.

    Например, ключевое слово Throw в подвыражении параметра делает 
    параметр Path обязательным параметром функции. 

    В данном случае ключевое слово Throw выводит строку сообщения, 
    однако именно присутствие ключевого слова Throw генерирует ошибку 
    с завершением работы, если параметр Path не указан. Выражение 
    после ключевого слова Throw является необязательным.

        function Get-XMLFiles
        {
            param ($path = $(throw "The Path parameter is required."))
            dir -path $path\* -include *.xml -recurse | sort lastwritetime | ft lastwritetime, attributes, name  -auto
        }


СМ. ТАКЖЕ
    about_Break
    about_Continue
    about_Scope
    about_Trap
    about_Try_Catch_Finally




Содержание