Megosztás a következőn keresztül:


about_Throw

Rövid leírás

throw A megszüntetési hibát generáló kulcsszót ismerteti.

Hosszú leírás

A throw kulcsszó végződési hibát okoz. A kulcsszóval throw leállíthatja a parancsok, függvények vagy szkriptek feldolgozását.

A kulcsszót például egy utasítás szkriptblokkjában használhatja arra, hogy reagáljon egy feltételre vagy egycatchfinallytry-catch-utasítás blokkjára.ifthrow

A throw kulcsszó bármilyen objektumot képes eldobni, például egy felhasználói üzenet sztringet vagy a hibát okozó objektumot.

Syntax

A kulcsszó szintaxisa a throw következő:

throw [<expression>]

A szintaxisban szereplő throw kifejezés nem kötelező. Ha az throw utasítás nem jelenik meg egy catch blokkban, és nem tartalmaz kifejezést, szkripthalted hibát okoz.

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

Ha a throw kulcsszó kifejezés catch nélküli blokkban van használva, az ismét az aktuális RuntimeExceptiont dobja. További információ: about_Try_Catch_Finally.

Sztring dobása

Az utasítás opcionális throw kifejezése lehet sztring, ahogyan az alábbi példában is látható:

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.

Más objektumok dobása

A kifejezés lehet olyan objektum is, amely a PowerShell-folyamatot jelképező objektumot dobja, ahogyan az az alábbi példában is látható:

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)

Az automatikus változóban $Error az ErrorRecord objektum TargetObject tulajdonságával megvizsgálhatja a hibát.

$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

ErrorRecord objektumot vagy .NET-kivételt is throw megadhat. Az alábbi példa a throw kulcsszót használja a System.FormatException objektum eldobásához.

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

Az eredményként kapott hiba

A throw kulcsszó létrehozhat egy ErrorRecord objektumot . Az ErrorRecord objektum Kivétel tulajdonsága runtimeException objektumot tartalmaz. Az ErrorRecord objektum és a RuntimeException objektum fennmaradó része a kidobott objektumtól függően változik.

Az throw objektum egy ErrorRecord objektumba van csomagolva, és a ErrorRecord objektum automatikusan az automatikus változóba $Error lesz mentve.

Kötelező throw paraméter létrehozása

A PowerShell korábbi verzióival ellentétben ne használja a kulcsszót a throw paraméterérvényesítéshez. A helyes útért tekintse meg a about_Functions_Advanced_Parameters .

Lásd még