Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
}