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 trefwoord throw 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 wordt weergegeven in een catch blok en er geen expressie wordt opgenomen, wordt er een ScriptHalted-fout gegenereerd.
throw
Exception: ScriptHalted
Als het trefwoord throw wordt gebruikt in een catch blok zonder expressie, wordt de huidige RuntimeException opnieuw gegooid. Zie about_Try_Catch_Finallyvoor 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."
Exception: 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)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)
U kunt de eigenschap TargetObject van het ErrorRecord-object in de automatische variabele $Error gebruiken om de fout te onderzoeken.
$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 throw-object of een .NET-uitzondering . In het volgende voorbeeld wordt het trefwoord throw gebruikt om een System.FormatException--object te gooien.
$formatError = New-Object System.FormatException
throw $formatError
OperationStopped: One of the identified items was in an invalid format.
De resulterende fout
Het trefwoord 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 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
In tegenstelling tot eerdere versies van PowerShell, gebruikt u niet het throw trefwoord voor parametervalidatie. Zie about_Functions_Advanced_Parameters voor de juiste manier.