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. Klíčové slovo můžete použít throw k zastavení 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é throw slovo 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 throw slova je následující:
throw [<expression>]
Výraz v throw syntaxi je volitelný. Pokud se throw příkaz nezobrazí v catch bloku a neobsahuje výraz, vygeneruje chybu ScriptHalted .
throw
Exception: ScriptHalted
throw Pokud je klíčové slovo použito v catch bloku bez výrazu, vyvolá aktuální RuntimeException znovu. Další informace najdete v tématu about_Try_Catch_Finally.
Vyvolání řetězce
Volitelný výraz v throw příkazu 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é throwobjekt ErrorRecord nebo výjimku .NET. Následující příklad používá throw klíčové slovo k vyvolání 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é throw slovo může generovat ErrorRecord objektu.
Exception vlastnost ErrorRecord objekt obsahuje RuntimeException objekt.
Zbývající část ErrorRecord objektu a RuntimeException objektu se liší v závislosti na objektu vyvolaném.
Objekt throw je zabalen do ErrorRecord objektu a ErrorRecord objekt je automaticky uložen v $Error automatické proměnné.
Použití throw k vytvoření povinného parametru
Na rozdíl od předchozích verzí PowerShellu nepoužívejte klíčové slovo pro ověření parametru throw . Správný způsob najdete v about_Functions_Advanced_Parameters .