Interpretace objektů ErrorRecord

Ve většině případů System.Management.Automation.ErrorRecord objekt představuje neukončující chybu vygenerovanou příkazem nebo skriptem. Ukončující chyby mohou také zadat další informace v záznamu ErrorRecord prostřednictvím rozhraní System.Management.Automation.IContainsErrorRecord rozhraní.

Pokud chcete do skriptu nebo hostitele napsat obslužnou rutinu chyby, která se má zpracovat při provádění příkazu nebo skriptu, musíte interpretovat System.Management.Automation.ErrorRecord objekt, abyste zjistili, jestli představuje třídu chyb, kterou chcete zpracovat.

Když rutina narazí na ukončující nebo neukončující chybu, měla by vytvořit záznam chyby, který popisuje chybový stav. Hostitelská aplikace musí tyto záznamy chyb prozkoumat a provést jakoukoli akci, která chybu zmírní. Hostitelská aplikace musí také prošetřit chybové záznamy pro neukončující chyby, které se nepodařilo zpracovat záznam, ale mohly pokračovat, a musí prozkoumat chybové záznamy o ukončování chyb, které způsobily zastavení kanálu.

Poznámka:

U ukončujících chyb volá rutina metodu System.Management.Automation.Cmdlet.ThrowTerminatingError. U neukončujících chyb volá rutina metodu System.Management.Automation.Cmdlet.WriteError.

Návrh záznamu chyby

Záznamy chyb jsou navržené tak, aby poskytovaly další informace o chybách, které nejsou k dispozici ve výjimkách, a zároveň zajistily, že kombinované informace v jednotlivých záznamech chyb jsou jedinečné. Tato jedinečnost umožňuje hostitelské aplikaci zkontrolovat různé části záznamu chyby, aby mohl identifikovat chybový stav a akci, kterou musí hostitel provést.

Interpretace chybových záznamů

Pokud chcete zjistit chybu, můžete zkontrolovat několik částí záznamu chyby. Mezi tyto části patří:

  • Kategorie chyby

  • Výjimka chyby

  • Plně kvalifikovaný identifikátor chyby (FQID)

  • Další informace

Kategorie chyby

Kategorie chyby záznamu chyby je jednou z předdefinovaných konstant poskytovaných System.Management.Automation.ErrorCategory výčtu. Tyto informace jsou k dispozici prostřednictvím System.Management.Automation.ErrorRecord.CategoryInfo vlastnost System.Management.Automation.ErrorRecord objektu.

Rutina může zadat kategorie CloseError, OpenError, InvalidType, ReadError a WriteError a další kategorie chyb. Hostitelská aplikace může k zachycení skupin chyb použít kategorii chyb.

Výjimka

Výjimka zahrnutá v záznamu chyby je poskytována rutinou a lze k ní přistupovat prostřednictvím System.Management.Automation.ErrorRecord.Exception vlastnosti System.Management.Automation.ErrorRecord objektu.

Hostitelské aplikace mohou použít klíčové slovo is k identifikaci, že výjimka je konkrétní třídy nebo odvozené třídy. Je lepší větvet podle typu výjimky, jak je znázorněno v následujícím příkladu.

`if (MyNonTerminatingError.Exception is AccessDeniedException)`
{
  ...
}

Tímto způsobem zachytíte odvozené třídy. Pokud je však výjimka deserializována, dochází k problémům.

Plně kvalifikovaný název domény

FQID je nejvýraznější informace, které můžete použít k identifikaci chyby. Jedná se o řetězec, který obsahuje identifikátor definovaný rutinou, název třídy rutiny a zdroj, který ohlásil chybu. Obecně platí, že záznam chyby je podobný záznamu události protokolu událostí systému Windows. FQID je analogické k následující řazené kolekci členů, která identifikuje třídu záznamu události: (název protokolu, zdrojový, ID události).

Plně kvalifikovaný název domény je navržený tak, aby se kontroloval jako jeden řetězec. Existují však případy, ve kterých je identifikátor chyby navržen tak, aby se parsoval hostitelskou aplikací. Následující příklad je plně kvalifikovaný identifikátor chyby ve správném formátu.

CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.

V předchozím příkladu je prvním tokenem identifikátor chyby, za kterým následuje název třídy rutiny. Identifikátor chyby může být jeden token nebo může být identifikátor oddělený tečkou, který umožňuje větvení při kontrole identifikátoru. Nepoužívejte prázdné znaky ani interpunkci v identifikátoru chyby. Je obzvláště důležité nepoužívat čárku; Windows PowerShell používá čárku k oddělení identifikátoru a názvu třídy rutiny.

Další informace

Objekt System.Management.Automation.ErrorRecord objekt může také poskytnout informace, které popisují prostředí, ve kterém došlo k chybě. Tyto informace zahrnují položky, jako jsou podrobnosti o chybě, informace o vyvolání a cílový objekt, který byl zpracován při výskytu chyby. I když tyto informace můžou být užitečné pro hostitelskou aplikaci, obvykle se k identifikaci chyby nepoužívá. Tyto informace jsou k dispozici prostřednictvím následujících vlastností:

Viz také