Hlášení chyb rutin

Rutiny by měly oznamovat chyby různě v závislosti na tom, zda chyby ukončující chyby nebo neukončující chyby. Ukončující chyby jsou chyby, které způsobí, že se kanál okamžitě ukončí, nebo dojde k chybám, ke kterým dochází, pokud nechcete pokračovat v zpracování. Neukončující chyby jsou tyto chyby, které hlásí aktuální chybový stav, ale rutina může pokračovat ve zpracování vstupních objektů. S neukončujícími chybami je uživatel většinou upozorněn na problém, ale rutina pokračuje ve zpracování dalšího vstupního objektu.

Ukončení a neukončující chyby

Následující pokyny lze použít k určení, zda chybový stav je ukončující chyba nebo neukončující chyba.

  • Brání chyba v úspěšném zpracování všech dalších vstupních objektů v rutině. Pokud ano, jedná se o ukončující chybu.

  • Souvisí chybový stav vztahující se k určitému vstupnímu objektu nebo podmnožině vstupních objektů? Pokud ano, jedná se o neukončující chybu.

  • Akceptuje rutina více vstupních objektů, takové zpracování může být úspěšné na jiném vstupním objektu? Pokud ano, jedná se o neukončující chybu.

  • Rutiny, které mohou přijmout více vstupních objektů, by se měly rozhodnout mezi tím, co jsou ukončovací a neukončující chyby, a to i v případě, že konkrétní situace platí jenom pro jeden vstupní objekt.

  • Rutiny mohou získat libovolný počet vstupních objektů a odeslat libovolný počet objektů úspěch nebo chyba před vyvoláním ukončující výjimky. Neexistuje žádný vztah mezi počtem přijatých vstupních objektů a počtem odeslaných objektů a počtu úspěšných a chybových objektů.

  • Rutiny, které mohou přijímat pouze 0-1 vstupní objekty a generovat pouze 0-1 výstupních objektů by měly považovat chyby za ukončující chyby a generovat ukončující výjimky.

Vytváření sestav neukončujících chyb

Vytváření sestav o neukončující chybě by mělo být vždy provedeno v rámci implementace rutiny System. Management. Automation. rutina. BeginProcessing , metody System. Management . Automation . rutine. ProcessRecord nebo metody System. Management. Automation. rutine . Tyto typy chyb jsou hlášeny voláním metody System. Management. Automation. rutine. WriteError , která zase odesílá záznam chyby do datového proudu chyb.

Vytváření sestav ukončujících chyb

Ukončující chyby jsou hlášeny vyvoláním výjimek nebo voláním metody System. Management. Automation. rutine. ThrowTerminatingError . Počítejte s tím, že rutiny mohou také zachytit a znovu vyvolat výjimky, jako je OutOfMemory, ale nejsou nutné k opětovnému vyvolání výjimek, protože prostředí PowerShell runtime je zachytí také.

Můžete také definovat vlastní výjimky pro problémy, které jsou specifické pro vaši situaci, nebo přidat další informace do existující výjimky pomocí jejího záznamu chyb.

Záznamy chyb

PowerShell popisuje neukončující chybový stav s objekty System. Management. Automation. ErrorRecord . Každý objekt poskytuje informace o kategorii chyb, volitelný cílový objekt a podrobnosti o chybové situaci.

Identifikátory chyb

Identifikátor chyby je jednoduchý řetězec, který identifikuje chybový stav v rámci rutiny. PowerShell kombinuje tento identifikátor s identifikátorem rutiny a vytvoří plně kvalifikovaný identifikátor chyby, který se dá později použít při filtrování datových proudů nebo chyb protokolování, při reakci na konkrétní chyby nebo jiné aktivity specifické pro uživatele.

Při zadávání identifikátorů chyb by se měly dodržovat tyto pokyny:

  • Přiřazení různých, vysoce specifických identifikátorů chyb k různým cestám kódu. Každá cesta kódu, která volá System. Management. Automation. rutina. WriteError nebo System. Management. Automation. rutina ThrowTerminatingError by měla mít svůj vlastní identifikátor chyby.

  • Identifikátory chyb by měly být jedinečné pro typy výjimek modulu CLR (Common Language Runtime) pro ukončovací i neukončující chyby.

  • Neměňte sémantiku identifikátoru chyby mezi verzemi vaší rutiny nebo poskytovatelem PowerShellu. Po navázání sémantiky identifikátoru chyby by měl zůstat v průběhu životního cyklu rutiny konstantní.

  • Pro ukončující chyby použijte jedinečný identifikátor chyby pro konkrétní typ výjimky CLR. Pokud se typ výjimky změní, použijte nový identifikátor chyby.

  • Pro neukončující chyby použijte pro konkrétní vstupní objekt specifický identifikátor chyby.

  • Vyberte text pro identifikátor, který tersely odpovídá zjištěné chybě. Nepoužívejte prázdné znaky ani interpunkční znaménka.

  • Negenerujte identifikátory chyb, které nejsou reprodukovatelné. Negenerujte například identifikátory, které obsahují identifikátor procesu. Identifikátory chyb jsou užitečné pouze v případě, že odpovídají identifikátorům, které se vyskytují v jiných uživatelích, kteří mají stejný problém.

Kategorie chyb

Kategorie chyb slouží k seskupení chyb uživatele. PowerShell definuje tyto kategorie a rutiny a zprostředkovatelé prostředí PowerShell musí při generování záznamu chyby vybírat mezi nimi.

Popis kategorií chyb, které jsou k dispozici, najdete v tématu výčet System. Management. Automation. ErrorCategory . Obecně platí, že byste se měli vyhnout použití chyb, UndefinedError a GenericError , pokud je to možné.

Uživatelé můžou při nastavování CategoryView zobrazovat chyby založené na kategoriích $ErrorView .

Viz také

Přehled rutin

Typy výstupu rutiny

Referenční informace k Windows PowerShellu