Delen via


about_Throw

Korte beschrijving

Beschrijft het throw trefwoord waarmee een afsluitfout wordt gegenereerd.

Lange beschrijving

Het throw trefwoord veroorzaakt een afsluitfout. U kunt het throw trefwoord gebruiken om de verwerking van een opdracht, functie of script te stoppen.

U kunt bijvoorbeeld het throw trefwoord in het scriptblok van een if instructie gebruiken om te reageren op een voorwaarde of in het catch blok van eenfinallytry-catch-instructie.

Het throw trefwoord kan elk object genereren, zoals een gebruikersberichttekenreeks of het object dat de fout heeft veroorzaakt.

Syntaxis

De syntaxis van het throw trefwoord is als volgt:

throw [<expression>]

De expressie in de throw syntaxis is optioneel. Wanneer de throw instructie niet in een catch blok wordt weergegeven en er geen expressie wordt opgenomen, wordt er een scripthaltefout gegenereerd .

throw
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo          : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted

Als het throw trefwoord wordt gebruikt in een catch blok zonder expressie, wordt de huidige RuntimeException opnieuw gegooid. Zie about_Try_Catch_Finally voor meer informatie.

Een tekenreeks genereren

De optionele expressie in een throw instructie kan een tekenreeks zijn, zoals wordt weergegeven in het volgende voorbeeld:

throw "This is an error."
This is an error.
At line:1 char:6
+ throw <<<<  "This is an error."
+ CategoryInfo          : OperationStopped: (This is an error.:String) [], R
untimeException
+ FullyQualifiedErrorId : This is an error.

Andere objecten gooien

De expressie kan ook een object zijn dat het object genereert dat het PowerShell-proces vertegenwoordigt, zoals wordt weergegeven in het volgende voorbeeld:

throw (Get-Process pwsh)
At line:1 char:6
+ throw <<<<  (get-process PowerShell)
+ CategoryInfo          : OperationStopped: (System.Diagnostics.Process (Pow
erShell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (PowerShell)

U kunt de eigenschap TargetObject van het object ErrorRecord in de $Error automatische variabele gebruiken om de fout te onderzoeken.

$Error[0].TargetObject
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
319      26    61016      70864   568     3.28   5548 PowerShell

U kunt ook throw een ErrorRecord-object of een .NET-uitzondering. In het volgende voorbeeld wordt het throw trefwoord gebruikt om een System.FormatException-object te gooien.

$formatError = New-Object System.FormatException
throw $formatError
One of the identified items was in an invalid format.
At line:1 char:6
+ throw <<<<  $formatError
+ CategoryInfo          : OperationStopped: (:) [], FormatException
+ FullyQualifiedErrorId : One of the identified items was in an invalid
format.

De resulterende fout

Het throw trefwoord kan een ErrorRecord-object genereren. De eigenschap Uitzondering van het object ErrorRecord bevat een RuntimeException-object . De rest van het object ErrorRecord en het RuntimeException-object varieert, afhankelijk van het gegenereerde object.

Het throw object wordt verpakt in een ErrorRecord-object en het object ErrorRecord wordt automatisch opgeslagen in de $Error automatische variabele.

Een throw verplichte parameter maken

Gebruik in tegenstelling tot eerdere versies van PowerShell het trefwoord niet throw voor parametervalidatie. Zie about_Functions_Advanced_Parameters voor de juiste manier.

Zie ook