Delen via


Over 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.

SYNTAXIS

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

ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo          : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : 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."

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:

C:\PS> throw (get-process PowerShell)

System.Diagnostics.Process (PowerShell)
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 automatische variabele $error gebruiken om de fout te onderzoeken.

C:\PS> $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 een ErrorRecord-object of een Microsoft .NET Framework 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

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.

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

U kunt het sleutelwoord Throw gebruiken om een functieparameter verplicht te maken.

Dit is een alternatief voor het gebruik van de parameter Verplicht van het trefwoord Parameter. Wanneer u de parameter Verplicht gebruikt, vraagt het systeem de gebruiker om de vereiste parameterwaarde. Wanneer u het sleutelwoord Throw gebruikt, stopt de opdracht en wordt de foutrecord weergegeven.

Het trefwoord Throw in de subexpressie van de parameter maakt de parameter Path bijvoorbeeld een vereiste parameter in de functie.

In dit geval genereert het trefwoord Throw een berichttekenreeks, maar het is de aanwezigheid van het trefwoord Throw dat de afsluitfout genereert als de path-parameter niet is opgegeven. De expressie na Throw is optioneel.

function Get-XMLFiles
{
  param ($path = $(throw "The Path parameter is required."))
  dir -path $path\*.xml -recurse |
    sort lastwritetime |
      ft lastwritetime, attributes, name  -auto
}

ZIE OOK

about_Break

about_Continue

about_Scopes

about_Trap

about_Try_Catch_Finally