about_Throw
Краткое описание
Описывает ключевое throw
слово, которое создает завершающую ошибку.
Подробное описание
Ключевое throw
слово вызывает завершающееся сообщение об ошибке. Ключевое throw
слово можно использовать для остановки обработки команды, функции или скрипта.
Например, ключевое слово можно использовать throw
в блоке скрипта if
инструкции для реагирования на условие или в catch
блокеfinally
try
-catch
-инструкции.
Ключевое throw
слово может вызвать любой объект, например строку сообщения пользователя или объект, вызвавшего ошибку.
Синтаксис
Синтаксис ключевого throw
слова выглядит следующим образом:
throw [<expression>]
Выражение в синтаксисе throw
является необязательным. throw
Если инструкция не отображается в блоке catch
и не включает выражение, она создает ошибку ScriptHalted.
throw
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted
Если ключевое throw
слово используется в catch
блоке без выражения, он снова создает текущее значение RuntimeException. Дополнительные сведения см. в about_Try_Catch_Finally.
Создание строки
Необязательное выражение в throw
инструкции может быть строкой, как показано в следующем примере:
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) [], R
untimeException
+ FullyQualifiedErrorId : This is an error.
Создание других объектов
Выражение также может быть объектом, который создает объект, представляющий процесс PowerShell, как показано в следующем примере:
throw (Get-Process pwsh)
At line:1 char:6
+ throw <<<< (get-process PowerShell)
+ CategoryInfo : OperationStopped: (System.Diagnostics.Process (Pow
erShell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (PowerShell)
Для проверки ошибки можно использовать свойство TargetObject объекта ErrorRecord в автоматической $Error
переменной.
$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 или исключение .NET. В следующем примере ключевое throw
слово используется для создания объекта System.FormatException .
$formatError = New-Object System.FormatException
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
упаковывается в объект ErrorRecord, и объект ErrorRecord автоматически сохраняется в автоматической переменной $Error
.
Использование throw
для создания обязательного параметра
В отличие от прошлых версий PowerShell, не используйте throw
ключевое слово для проверки параметров. Для правильного способа см . about_Functions_Advanced_Parameters .
См. также
PowerShell