about_Throw

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 .

Viz také