Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Beschrijft het throw trefwoord, dat standaard een scripteindfout genereert.
Lange beschrijving
Het throw trefwoord veroorzaakt standaard een fout bij het beëindigen van scripts. U kunt het throw trefwoord gebruiken om de verwerking van een opdracht, functie of script te stoppen.
In tegenstelling tot fouten bij het beëindigen van instructies wordt de throw volledige aanroepstack met het trefwoord afwikkeld. Uitvoering stopt volledig tenzij de fout wordt opgevangen door een try/catch blok of trap instructie.
Opmerking
$ErrorActionPreference kan onderdrukken throw. Als deze instelling is ingesteld op SilentlyContinue of Ignore, wordt de fout niet doorgegeven en wordt de uitvoering voortgezet op de volgende instructie. Wanneer u een geavanceerde functie aanroept, -ErrorAction SilentlyContinuewordt de parameter omgezet in een bereik-lokale $ErrorActionPreference waarde, zodat deze ook in die functie wordt onderdrukt throw . Zelfs als dit wordt onderdrukt, throw wordt nog steeds een vermelding vastgelegd in $Error.
De Ignore waarde voorkomt alleen dat $Error de opname voor niet-afsluitfouten, zoals fouten die worden gegenereerd door $PSCmdlet.ThrowTerminatingError().
Zie about_Error_Handling voor meer informatie over foutcategorieën en $ErrorActionPreference gedrag.
U kunt bijvoorbeeld het throw trefwoord in het instructieblok van een if instructie gebruiken om te reageren op een voorwaarde of in het catch blok van een try/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.