about_Throw
Korte beschrijving
Beschrijft het sleutelwoord Throw, waarmee een afsluitfout wordt gegenereerd.
Lange beschrijving
Het trefwoord Throw veroorzaakt een afsluitfout. U kunt het sleutelwoord Throw gebruiken om de verwerking van een opdracht, functie of script te stoppen.
U kunt bijvoorbeeld het sleutelwoord Throw gebruiken in het scriptblok van een If-instructie om te reageren op een voorwaarde of in het Catch-blok van een Try-Catch-Finally-instructie. U kunt ook het trefwoord Throw in een parameterdeclaratie gebruiken om een functieparameter verplicht te maken.
Het trefwoord Throw kan elk object genereren, zoals een gebruikersberichttekenreeks of het object dat de fout heeft veroorzaakt.
Syntax
De syntaxis van het trefwoord Throw is als volgt:
throw [<expression>]
De expressie in de syntaxis Throw is optioneel. Wanneer de instructie Throw niet wordt weergegeven in een Catch-blok en deze geen expressie bevat, wordt er een ScriptHalted-fout gegenereerd.
C:\PS> throw
Exception: ScriptHalted
Als het sleutelwoord Throw wordt gebruikt in een Catch-blok zonder een expressie, wordt de huidige RuntimeException opnieuw gegooid. Zie about_Try_Catch_Finally voor meer informatie.
Een tekenreeks genereren
De optionele expressie in een instructie Throw kan een tekenreeks zijn, zoals wordt weergegeven in het volgende voorbeeld:
C:\PS> throw "This is an error."
Exception: This is an error.
Andere objecten genereren
De expressie kan ook een object zijn dat het object genereert dat het PowerShell-proces vertegenwoordigt, zoals wordt weergegeven in het volgende voorbeeld:
C:\PS> throw (get-process Pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)
U kunt de eigenschap TargetObject van het object ErrorRecord in de automatische variabele $error gebruiken om de fout te onderzoeken.
C:\PS> $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
U kunt ook een ErrorRecord-object of een .NET-uitzondering genereren. In het volgende voorbeeld wordt het sleutelwoord Throw gebruikt om een System.FormatException-object te genereren.
C:\PS> $formatError = new-object system.formatexception
C:\PS> throw $formatError
OperationStopped: One of the identified items was in an invalid format.
De resulterende fout
Het sleutelwoord Throw kan een ErrorRecord-object genereren. De eigenschap Exception van het object ErrorRecord bevat een RuntimeException-object. De rest van het ErrorRecord-object en het RuntimeException-object variƫren afhankelijk van het object dat het sleutelwoord Throw genereert.
Het RunTimeException-object wordt verpakt in een ErrorRecord-object en het object ErrorRecord wordt automatisch opgeslagen in de $Error automatische variabele.
Throw gebruiken om een verplichte parameter te maken
In tegenstelling tot eerdere versies van PowerShell, moet u het sleutelwoord Throw niet gebruiken voor parametervalidatie. Zie about_Functions_Advanced_Parameters voor de juiste manier.