Megszakítást okozó hibák

Ez a témakör a megszakítási hibák jelentéséhez használt módszert ismerteti. Azt is bemutatja, hogyan hívható meg a metódus a parancsmagból, és ismerteti a Windows PowerShell-runtime által a metódus hívatakor visszaadható kivételeket.

Megszakítási hiba esetén a parancsmagnak a System.Management.Automation.Cmdlet.Throwterminatingerror* metódus hívásával kell jelentenie a hibát. Ez a metódus lehetővé teszi, hogy a parancsmag hibarekordot küldjön, amely leírja a megszakítási hibát okozó feltételt. A hibarekordokkal kapcsolatos további információkért lásd: Windows PowerShell hibarekordok.

A System.Management.Automation.Cmdlet.Throwterminatingerror* metódus hívatakor az Windows PowerShell-runtime véglegesen leállítja a folyamat végrehajtását, és egy System.Management.Automation.Pipelinestoppedexception kivételt ad vissza. A System.Management.Automation.Cmdlet.WriteObject, System.Management.Automation.Cmdlet.WriteError, vagy több más API meghívásának minden további kísérlete a System.Management.Automation.Pipelinestoppedexception kivételt okozza.

A System.Management.Automation.Pipelinestoppedexception kivétel akkor is előfordulhat, ha a folyamat egy másik parancsmagja lezáró hibát jelez, ha a felhasználó leállította a folyamatot, vagy ha a folyamat valamilyen okból leállt. A parancsmagnak nem kell elfogni a System.Management.Automation.Pipelinestoppedexception kivételt, hacsak nem kell megtisztítani a nyitott erőforrásokat vagy annak belső állapotát.

A parancsmagok a megszakítást megelőző hibák jelentése előtt bármilyen számú kimeneti objektumot vagy megszakítást nem megelőző hibát írhatnak. A megszakítási hiba azonban véglegesen leállítja a folyamatot, és nem lehet további kimenetet, megszakítási vagy megszakítást nem végződő hibákat jelenteni.

A parancsmagok csak a System.Management.Automation.Cmdlet.Throwterminatingerror* metódust hívják meg a System.Management.Automation.Cmdlet.BeginProcessing, System.Management.Automation.Cmdlet.ProcessRecordvagy System.Management.Automation.Cmdlet.EndProcessing bemeneti feldolgozási metódusnak nevezett szálból. Ne kísérelje meg a System.Management.Automation.Cmdlet.Throwterminatingerror* vagy a System.Management.Automation.Cmdlet.WriteError hívását egy másik szálból. Ehelyett a hibákat vissza kell adni a főszálnak.

A parancsmagok kivételt dobnak a System.Management.Automation.Cmdlet.BeginProcessing, System.Management.Automation.Cmdlet.ProcessRecordvagy System.Management.Automation.Cmdlet.EndProcessing metódus implementációja során. A metódusok által okozott kivételeket (kivéve néhány súlyos hibafeltételeket, amelyek leállítják a Windows PowerShell-gazdagépet) megszakítási hibaként értelmezi, amely leállítja a folyamatot, de nem Windows PowerShell teljes egészében. (Ez csak a fő parancsmagszálra vonatkozik. A parancsmag által elindított szálak nem megfelelő kivételei általában leállítjak a Windows PowerShell gazdagépet.) Javasoljuk, hogy kivétel beírása helyett használja a System.Management.Automation.Cmdlet.Throwterminatingerror* függvényt, mivel a hibarekord további információkat tartalmaz a hiba feltételével kapcsolatban, ami hasznos lehet a végfelhasználó számára. A parancsmagok figyelembe kell, hogy vegyék a felügyelt kódra vonatkozó, az összes kivétel elfogása és kezelése ellen vonatkozó útmutatót ( catch (Exception e) ). Csak az ismert és várt típusok kivételeit konvertálja hibarekordokká.

Lásd még:

System.Management.Automation.Cmdlet.BeginProcessing

System.Management.Automation.Cmdlet.EndProcessing

System.Management.Automation.Cmdlet.ProcessRecord

System.Management.Automation.Pipelinestoppedexception

System.Management.Automation.Cmdlet.Throwterminatingerror*

System.Management.Automation.Cmdlet.WriteError

Windows PowerShelles hibarekordok

Windows PowerShell-parancsmag írása