about_Throw

Kort beskrivning

Beskriver nyckelordet throw som genererar ett avslutande fel.

Lång beskrivning

Nyckelordet throw orsakar ett avslutande fel. Du kan använda nyckelordet throw för att stoppa bearbetningen av ett kommando, en funktion eller ett skript.

Du kan till exempel använda nyckelordet throw i skriptblocket för en if -instruktion för att svara på ett villkor eller i blocket för catch en try--catchfinally -instruktion.

Nyckelordet throw kan utlösa valfritt objekt, till exempel en användarmeddelandesträng eller det objekt som orsakade felet.

Syntax

Syntaxen för nyckelordet throw är följande:

throw [<expression>]

Uttrycket i syntaxen throw är valfritt. När -instruktionen throw inte visas i ett catch block, och den inte innehåller ett uttryck, genererar den ett ScriptHalted-fel .

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

Om nyckelordet throw används i ett catch block utan uttryck genererar det den aktuella RuntimeException igen. Mer information finns i about_Try_Catch_Finally.

Kasta en sträng

Det valfria uttrycket i en throw -instruktion kan vara en sträng, som du ser i följande exempel:

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.

Kasta andra objekt

Uttrycket kan också vara ett objekt som genererar objektet som representerar PowerShell-processen, enligt följande exempel:

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)

Du kan använda egenskapen TargetObject för objektet ErrorRecord i den $Error automatiska variabeln för att undersöka felet.

$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

Du kan också throw ha ett ErrorRecord-objekt eller ett .NET-undantag. I följande exempel används nyckelordet throw för att utlösa ett System.FormatException-objekt .

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

Det resulterande felet

Nyckelordet throw kan generera ett ErrorRecord-objekt . Egenskapen Exception för objektet ErrorRecord innehåller ett RuntimeException-objekt . Resten av ErrorRecord-objektet och RuntimeException-objektet varierar beroende på vilket objekt som genereras.

Objektet throw omsluts i ett ErrorRecord-objekt och ErrorRecord-objektet sparas automatiskt i den $Error automatiska variabeln.

Använda throw för att skapa en obligatorisk parameter

Till skillnad från tidigare versioner av PowerShell ska du inte använda nyckelordet throw för parameterverifiering. Se about_Functions_Advanced_Parameters för rätt sätt.

Se även