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 eentry
-catch
-finally
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.