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


about_Throw

Краткое описание

Описывает ключевое слово throw, которое создает завершающую ошибку.

Длинное описание

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

Например, ключевое слово можно использовать throw в блоке инструкции if для реагирования на условие или catch в блоке try/catch/finally инструкции.

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

Синтаксис

Синтаксис ключевого слова throw выглядит следующим образом:

throw [<expression>]

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

throw
Exception: ScriptHalted

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

Создание строки

Необязательное выражение в операторе throw может быть строкой, как показано в следующем примере:

throw "This is an error."
Exception: This is an error.

Создание других объектов

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

throw (Get-Process pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)

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

$Error[0].TargetObject
 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    125   174.44     229.57      23.61    1548   2 pwsh
     63    44.07      81.95       1.75    1732   2 pwsh
     63    43.32      77.65       1.48    9092   2 pwsh

Можно также throw объект ErrorRecord или исключение .NET. В следующем примере используется ключевое слово throw для создания объекта System.FormatExcept ion.

$formatError = New-Object System.FormatException
throw $formatError
OperationStopped: One of the identified items was in an invalid format.

Результирующая ошибка

Ключевое слово throw может создать объект ErrorRecord. Свойство Exception объекта ErrorRecord содержит объект RuntimeException. Оставшаяся часть объекта errorRecord и объект runtimeException зависит от вызываемого объекта.

Объект throw упакован в объект ErrorRecord, а объект ErrorRecord автоматически сохраняется в $Error автоматической переменной.

Использование throw для создания обязательного параметра

В отличие от прошлых версий PowerShell, не используйте ключевое слово throw для проверки параметров. Для правильного способа см. about_Functions_Advanced_Parameters.

См. также