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 kulcsszót throw ismerteti, amely alapértelmezés szerint szkript-végződési hibát generál.
Hosszú leírás
A throw kulcsszó alapértelmezés szerint szkript-megszakítási hibát okoz. A parancsok, függvények vagy szkriptek feldolgozásának leállításához használhatja a throw kulcsszót.
Az utasítás-megszüntetési hibáktól eltérően a throw kulcsszó kikapcsolja a teljes hívásvermet. A végrehajtás teljesen leáll, kivéve, ha a hibát egy try/catch blokk vagy trap utasítás észleli.
Megjegyzés:
$ErrorActionPreferenceletilthatja a .. parancs throw Ha be van SilentlyContinue állítva vagy Ignore, a hiba nem propagálja a hibát, és a végrehajtás a következő utasításnál folytatódik. Ha speciális függvényt -ErrorAction SilentlyContinuehív meg, a paraméter egy hatókör-helyi $ErrorActionPreference értékre fordítja le, így a függvényen belül is letiltja throw a függvényt. Még akkor is rögzíti a bejegyzést$Error, throw ha el van tiltva.
Az Ignore érték csak megakadályozza $Error a rögzítést olyan nem végződő hibák esetén, mint amelyeket a rendszer generált $PSCmdlet.ThrowTerminatingError().
A hibakategóriákról és $ErrorActionPreference a viselkedésről további információt a about_Error_Handling című témakörben talál.
Egy utasítás utasításblokkjában throw például a if kulcsszóval válaszolhat egy feltételre vagy egy catchtry/catch/finally utasításblokkra.
A throw kulcsszó bármilyen objektumot, például felhasználói üzenet sztringet vagy a hibát okozó objektumot is képes eldobni.
Szemantika
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.
throw
Exception: ScriptHalted
Ha a throw kulcsszó kifejezés nélküli catch blokkban van használva, az ismét az aktuális RuntimeExceptiont dobja. További információ: about_Try_Catch_Finally.
Sztring dobása
A throw utasítás választható kifejezése lehet sztring, ahogy az alábbi példában is látható:
throw "This is an error."
Exception: 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)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)
Az automatikus változóban található ErrorRecord objektum $Error tulajdonságával megvizsgálhatja a hibát.
$Error[0].TargetObject
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
125 174.44 229.57 23.61 1548 2 pwsh
63 44.07 81.95 1.75 1732 2 pwsh
63 43.32 77.65 1.48 9092 2 pwsh
throw objektumot vagy .NET-kivételt is . Az alábbi példa a throw kulcsszót használja egy System.FormatException objektum dobásához.
$formatError = New-Object System.FormatException
throw $formatError
OperationStopped: One of the identified items was in an invalid format.
Az eredményként kapott hiba
A throw kulcsszó ErrorRecord objektumot hozhat létre. A ErrorRecord objektum Kivétel tulajdonsága RuntimeException objektumot tartalmaz.
A ErrorRecord objektum és a RuntimeException objektum fennmaradó része a kidobott objektumtól függően változik.
A throw objektum egy ErrorRecord objektumba van csomagolva, az ErrorRecord objektum pedig automatikusan a $Error automatikus változóba lesz mentve.
Kötelező throw paraméter létrehozása
A PowerShell korábbi verzióitól eltérően ne használja a throw kulcsszót a paraméterek érvényesítéséhez. A helyes útért tekintse meg a about_Functions_Advanced_Parameters.