Dela via


Felrapportering för cmdlet

Cmdlets bör rapportera fel på olika sätt beroende på om felen avslutar fel eller inte. Avslutande fel är fel som gör att pipelinen avslutas omedelbart, eller fel som inträffar när det inte finns någon anledning att fortsätta bearbeta. Icke-obestämda fel är de fel som rapporterar ett aktuellt feltillstånd, men cmdleten kan fortsätta att bearbeta indataobjekt. Vid obestämda fel meddelas användaren vanligtvis om problemet, men cmdleten fortsätter att bearbeta nästa indataobjekt.

Avslutande och icke-obestämda fel

Följande riktlinjer kan användas för att avgöra om ett feltillstånd är ett avslutande fel eller ett icke-terminerande fel.

  • Förhindrar feltillståndet att cmdleten kan bearbeta ytterligare indataobjekt? I så fall är detta ett avslutande fel.

  • Är feltillståndet relaterat till ett specifikt indataobjekt eller en delmängd av indataobjekt? I så fall är detta ett icke-fastställt fel.

  • Accepterar cmdleten flera indataobjekt, så att bearbetningen kan lyckas på ett annat indataobjekt? I så fall är detta ett icke-fastställt fel.

  • Cmdlets som kan acceptera flera indataobjekt bör välja mellan vad som avslutar och icke-terminerar fel, även om en viss situation endast gäller för ett enda indataobjekt.

  • Cmdlet:ar kan ta emot val av antal indataobjekt och skicka val av lyckade eller fel-objekt innan ett avslutande undantag skickas. Det finns ingen relation mellan antalet mottagna indataobjekt och antalet lyckade- och felobjekt som skickats.

  • Cmdlets som bara kan ta emot 0–1 indataobjekt och endast generera 0–1-utdataobjekt bör behandla fel som avslutande fel och generera avslutande undantag.

Rapportera icke-obestämda fel

Rapportering av ett oåterkalleligt fel bör alltid ske inom cmdletens implementering av metoden System.Management.Automation.Cmdlet.BeginProcessing, metoden System.Management.Automation.Cmdlet.ProcessRecord eller metoden System.Management.Automation.Cmdlet.EndProcessing. Dessa typer av fel rapporteras genom anrop till metoden System.Management.Automation.Cmdlet.WriteError som i sin tur skickar en felpost till felströmmen.

Rapportera avslutande fel

Avslutande fel rapporteras genom att utlösa undantag eller genom att anropa metoden System.Management.Automation.Cmdlet.ThrowTerminatingError. Tänk på att cmdlet:ar också kan fånga och rethrow-undantag som OutOfMemory, men de behöver inte rethrow-undantag eftersom PowerShell-körningen även fångar upp dem.

Du kan också definiera egna undantag för problem som är specifika för din situation eller lägga till ytterligare information i ett befintligt undantag med hjälp av dess felpost.

Felposter

PowerShell beskriver ett oåterkalleligt feltillstånd med objekten System.Management.Automation.ErrorRecord. Varje objekt innehåller information om felkategorier, ett valfritt målobjekt och information om feltillståndet.

Felidentifierare

Felidentifieraren är en enkel sträng som identifierar feltillståndet i cmdleten. PowerShell kombinerar den här identifieraren med en cmdlet-identifierare för att skapa en fullständigt kvalificerad felidentifierare som kan användas senare när du filtrerar felströmmar eller loggningsfel, när du svarar på specifika fel eller med andra användarspecifika aktiviteter.

Följande riktlinjer bör följas när du anger felidentifierare:

  • Tilldela olika, mycket specifika felidentifierare till olika kodsökvägar. Varje kodsökväg som anropar System.Management.Automation.Cmdlet.WriteError eller System.Management.Automation.Cmdlet.ThrowTerminatingError ska ha en egen felidentifierare.

  • Felidentifierare bör vara unika för CLR-undantagstyper (Common Language Runtime) för både avslutande och icke-terminerande fel.

  • Ändra inte semantiken för en felidentifierare mellan versioner av din cmdlet eller PowerShell-provider. När semantiken för en felidentifierare har upprättats bör den vara konstant under cmdletens livscykel.

  • Om du vill avsluta fel använder du en unik felidentifierare för en viss CLR-undantagstyp. Om undantagstypen ändras använder du en ny felidentifierare.

  • För att inte fastställa fel använder du en specifik felidentifierare för ett specifikt indataobjekt.

  • Välj text för identifieraren som tersely motsvarar felet som rapporteras. Använd inte blanksteg eller skiljetecken.

  • Generera inte felidentifierare som inte kan återskapas. Generera till exempel inte identifierare som innehåller en processidentifierare. Felidentifierare är bara användbara när de motsvarar identifierare som visas av andra användare som har samma problem.

Felkategorier

Felkategorier används för att gruppera fel för användaren. PowerShell definierar dessa kategorier och cmdlets och PowerShell-leverantörer måste välja mellan dem när felposten genereras.

En beskrivning av de tillgängliga felkategorierna finns i uppräkningen System.Management.Automation.ErrorCategory. I allmänhet bör du undvika att använda NoError, UndefinedError och GenericError när det är möjligt.

Användare kan visa fel baserat på kategori när de anger $ErrorView CategoryView.

Se även

Översikt över cmdlets

Typer av cmdlet-utdata

Windows PowerShell-referens