Delen via


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.

Zie ook