Поделиться через


about_Throw

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

about_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 может быть строка, как показано в примере ниже.

        C:\PS> throw "This is an error."

        This is an error.
        At line:1 char:6
        + throw <<<<  "This is an error."
            + CategoryInfo          : OperationStopped: (This is an error.:String) [], RuntimeException
            + FullyQualifiedErrorId : This is an error.

СОЗДАНИЕ ДРУГИХ ОБЪЕКТОВ

Выражение также может являться объектом, который выводит объект, представляющий процесс 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

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

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

        C:\PS> throw $formatError

        One of the identified items was in an invalid format.
        At line:1 char:6
        + throw <<<<  $formatError
            + CategoryInfo          : OperationStopped: (:) [], FormatException
            + FullyQualifiedErrorId : One of the identified items was in an invalid format.

ВОЗВРАЩАЕМАЯ ОШИБКА

Ключевое слово 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\*.xml -recurse | sort lastwritetime | ft lastwritetime, attributes, name  -auto
        }

СМ. ТАКЖЕ

about_Break

about_Continue

about_Scope

about_Trap

about_Try_Catch_Finally