about_Throw
Kort beskrivning
Beskriver nyckelordet throw
som genererar ett avslutande fel.
Lång beskrivning
Nyckelordet throw
orsakar ett avslutande fel. Du kan använda nyckelordet throw
för att stoppa bearbetningen av ett kommando, en funktion eller ett skript.
Du kan till exempel använda nyckelordet throw
i skriptblocket för en if
-instruktion för att svara på ett villkor eller i blocket för catch
en try
--catch
finally
-instruktion.
Nyckelordet throw
kan utlösa valfritt objekt, till exempel en användarmeddelandesträng eller objektet som orsakade felet.
Syntax
Syntaxen för nyckelordet throw
är följande:
throw [<expression>]
Uttrycket i syntaxen throw
är valfritt. När instruktionen throw
inte visas i ett catch
block och den inte innehåller ett uttryck genererar den ett ScriptHalted-fel .
throw
Exception: ScriptHalted
Om nyckelordet throw
används i ett catch
block utan uttryck genererar det den aktuella RuntimeException igen. Mer information finns i about_Try_Catch_Finally.
Kasta en sträng
Det valfria uttrycket i en throw
-instruktion kan vara en sträng, som du ser i följande exempel:
throw "This is an error."
Exception: This is an error.
Kasta andra objekt
Uttrycket kan också vara ett objekt som genererar objektet som representerar PowerShell-processen, enligt följande exempel:
throw (Get-Process pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)
Du kan använda egenskapen TargetObject för ErrorRecord-objektet i den $Error
automatiska variabeln för att undersöka felet.
$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
Du kan också throw
ha ett ErrorRecord-objekt eller ett .NET-undantag. I följande exempel används nyckelordet throw
för att skapa ett System.FormatException-objekt .
$formatError = New-Object System.FormatException
throw $formatError
OperationStopped: One of the identified items was in an invalid format.
Det resulterande felet
Nyckelordet throw
kan generera ett ErrorRecord-objekt . Egenskapen Exception för objektet ErrorRecord innehåller ett RuntimeException-objekt .
Resten av ErrorRecord-objektet och RuntimeException-objektet varierar beroende på vilket objekt som genereras.
Objektet throw
omsluts i ett ErrorRecord-objekt och ErrorRecord-objektet sparas automatiskt i den $Error
automatiska variabeln.
Använda throw
för att skapa en obligatorisk parameter
Till skillnad från tidigare versioner av PowerShell ska du inte använda nyckelordet throw
för parametervalidering. Se about_Functions_Advanced_Parameters för rätt sätt.