Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Krátký popis
Popisuje throw klíčové slovo, které ve výchozím nastavení generuje chybu ukončující skript.
Dlouhý popis
Klíčové throw slovo ve výchozím nastavení způsobí chybu ukončující skript. Pomocí klíčového slova throw můžete zastavit zpracování příkazu, funkce nebo skriptu.
Na rozdíl od chyb ukončování příkazů throw klíčové slovo uvolní celý zásobník volání. Provádění se úplně zastaví, pokud se chyba nezachytí blokem nebo trap příkazemtry/catch.
Poznámka:
$ErrorActionPreference může potlačit throw. Pokud je nastavená SilentlyContinue hodnota nebo Ignore, chyba se nešíruje a provádění pokračuje v dalším příkazu. Při volání pokročilé funkce pomocí -ErrorAction SilentlyContinueparametru se překládá na místní $ErrorActionPreference hodnotu oboru, takže také potlačuje throw uvnitř této funkce. I když je potlačeno, throw stále zaznamenává položku v $Error.
Hodnota Ignore zabraňuje $Error záznamu pouze pro neukončující chyby, jako jsou ty vygenerované $PSCmdlet.ThrowTerminatingError().
Další informace o kategoriích chyb a $ErrorActionPreference chování najdete v tématu about_Error_Handling.
Můžete například použít throw klíčové slovo v bloku if příkazu k reakci na podmínku nebo v catch bloku try/catch/finally příkazu.
Klíčové slovo throw může vyvolat jakýkoli objekt, například řetězec zprávy uživatele nebo objekt, který způsobil chybu.
Syntaxe
Syntaxe klíčového slova throw je následující:
throw [<expression>]
Výraz v syntaxi throw je volitelný. Pokud se příkaz throw nezobrazí v bloku catch a neobsahuje výraz, vygeneruje chybu ScriptHalted.
throw
Exception: ScriptHalted
Pokud se klíčové slovo throw použije v bloku catch bez výrazu, vyvolá aktuální výjimku RuntimeException znovu. Další informace naleznete v tématu about_Try_Catch_Finally.
Vyvolání řetězce
Volitelný výraz v příkazu throw může být řetězec, jak je znázorněno v následujícím příkladu:
throw "This is an error."
Exception: This is an error.
Vyvolání jiných objektů
Výraz může být také objekt, který vyvolá objekt, který představuje proces PowerShellu, jak je znázorněno v následujícím příkladu:
throw (Get-Process pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)
K prozkoumání chyby můžete použít vlastnost TargetObject objektu ErrorRecord v $Error automatické proměnné.
$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
Můžete také throw objekt ErrorRecord nebo výjimku .NET. Následující příklad používá klíčové slovo throw vyvolá System.FormatException objektu.
$formatError = New-Object System.FormatException
throw $formatError
OperationStopped: One of the identified items was in an invalid format.
Výsledná chyba
Klíčové slovo throw může generovat objekt ErrorRecord. Vlastnost Exception objektu ErrorRecord obsahuje objekt RuntimeException.
Zbývající část objektu ErrorRecord a objekt RuntimeException se liší v závislosti na vyvolaném objektu.
Objekt throw je zabalen do objektu ErrorRecord a objekt ErrorRecord se automaticky uloží do $Error automatické proměnné.
Použití throw k vytvoření povinného parametru
Na rozdíl od předchozích verzí PowerShellu nepoužívejte pro ověření parametru klíčové slovo throw. Správný způsob najdete v about_Functions_Advanced_Parameters.