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


A Throw-ról

RÖVID LEÍRÁS

A Throw kulcsszót ismerteti, amely végződési hibát okoz.

HOSSZÚ LEÍRÁS

A Throw kulcsszó megszakítási hibát okoz. A Throw kulcsszóval leállíthatja egy parancs, függvény vagy szkript feldolgozását.

Használhatja például a Throw kulcsszót egy If utasítás szkriptblokkjában egy feltételre való reagáláshoz, vagy egy Try-Catch-Finally utasítás Catch blokkjában. A Throw kulcsszóval egy paraméterdeklarációban is kötelezővé teheti a függvényparamétereket.

A Throw kulcsszó bármilyen objektumot dobhat, például egy felhasználói üzenet sztringjét vagy a hibát okozó objektumot.

SZINTAXIS

A Throw kulcsszó szintaxisa a következő:

throw [<expression>]

A Throw szintaxisban szereplő kifejezés nem kötelező. Ha a Throw utasítás nem jelenik meg egy Catch blokkban, és nem tartalmaz kifejezést, ScriptHalted hibát generál.

C:\PS> throw

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

Ha a Throw kulcsszót kifejezés nélkül használja egy Catch blokkban, akkor ismét az aktuális RuntimeException értéket adja vissza. További információ: about_Try_Catch_Finally.

HÚRDOBÁS

A Throw utasítás választható kifejezése lehet sztring, ahogy az alábbi példában látható:

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.

MÁS TÁRGYAK 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ó:

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)

A hiba vizsgálatához használhatja az $error automatikus változó ErrorRecord objektumának TargetObject tulajdonságát.

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

Objektumot vagy Microsoft .NET Framework kivételt is dobhat. Az alábbi példa a Throw kulcsszóval dob egy System.FormatException objektumot.

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.

EBBŐL EREDŐ HIBA

A Throw kulcsszó létrehozhat egy ErrorRecord objektumot. Az ErrorRecord objektum Exception tulajdonsága tartalmaz egy RuntimeException objektumot. Az ErrorRecord objektum és a RuntimeException objektum fennmaradó része a Throw kulcsszó által visszadobott objektumtól függően változik.

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

KÖTELEZŐ PARAMÉTER LÉTREHOZÁSA A THROW HASZNÁLATÁVAL

A Throw kulcsszóval kötelezővé teheti a függvényparamétereket.

Ez a Parameter kulcsszó kötelező paraméterének alternatívája. A Kötelező paraméter használatakor a rendszer kéri a felhasználótól a szükséges paraméterértéket. A Throw kulcsszó használatakor a parancs leáll, és megjeleníti a hibarekordot.

A paraméter alkifejezésben található Throw kulcsszó például a Path paramétert kötelező paraméterré teszi a függvényben.

Ebben az esetben a Throw kulcsszó egy üzenetsztringet dob vissza, de a Throw kulcsszó jelenléte okozza a megszakítási hibát, ha az Path paraméter nincs megadva. A Throw után következő kifejezés nem kötelező.

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

LÁSD MÉG

about_Break

Folytatás

about_Scopes

Trap_témája

a Try_Catch_Finally kezelése