Fel som avbryter körningenTerminating Errors

I det här avsnittet beskrivs den metod som används för att rapportera avslutande fel.This topic discusses the method used to report terminating errors. Den beskriver också hur du anropar-metoden från cmdleten och diskuterar undantagen som kan returneras av Windows PowerShell-körningsmiljön när metoden anropas.It also discusses how to call the method from within the cmdlet, and it discusses the exceptions that can be returned by the Windows PowerShell runtime when the method is called.

När ett avbrotts fel inträffar ska cmdleten rapportera felet genom att anropa metoden system. Management. Automation. cmdlet. Throwterminatingerror * .When a terminating error occurs, the cmdlet should report the error by calling the System.Management.Automation.Cmdlet.Throwterminatingerror* method. Den här metoden gör att cmdleten kan skicka en felpost som beskriver det villkor som orsakade det avslutande felet.This method allows the cmdlet to send an error record that describes the condition that caused the terminating error. Mer information om fel poster finns i fel poster för Windows PowerShell.For more information about error records, see Windows PowerShell Error Records.

När metoden system. Management. Automation. cmdlet. Throwterminatingerror * anropas, stoppas körningen av pipelinen permanent i Windows PowerShell-körningsmiljön och ett system. Management. Automation. PipelineStoppedException -undantag genereras.When the System.Management.Automation.Cmdlet.Throwterminatingerror* method is called, the Windows PowerShell runtime permanently stops the execution of the pipeline and throws a System.Management.Automation.Pipelinestoppedexception exception. Eventuella efterföljande försök att anropa system. Management. Automation. cmdlet. WriteObject, system. Management. Automation. cmdlet. WriteErroreller flera andra API: er medför att dessa anrop genererar ett system. Management. Automation. PipelineStoppedException -undantag.Any subsequent attempts to call System.Management.Automation.Cmdlet.WriteObject, System.Management.Automation.Cmdlet.WriteError, or several other APIs causes those calls to throw a System.Management.Automation.Pipelinestoppedexception exception.

Undantags felet system. Management. Automation. PipelineStoppedException kan också inträffa om en annan cmdlet i pipeline rapporterar ett avslutande fel, om användaren har bett att stoppa pipelinen eller om pipelinen har stoppats innan den slutförts av någon anledning.The System.Management.Automation.Pipelinestoppedexception exception can also occur if another cmdlet in the pipeline reports a terminating error, if the user has asked to stop the pipeline, or if the pipeline has been halted before completion for any reason. Cmdleten behöver inte fånga upp undantaget system. Management. Automation. PipelineStoppedException , om det inte måste rensas öppna resurser eller det interna läget.The cmdlet does not need to catch the System.Management.Automation.Pipelinestoppedexception exception unless it must clean up open resources or its internal state.

Cmdletar kan skriva valfritt antal utgående objekt eller icke-avslutande fel innan ett avslutande fel rapporteras.Cmdlets can write any number of output objects or non-terminating errors before reporting a terminating error. Det avslutande felet stoppar dock pipelinen permanent och inga ytterligare utdata, avslutande fel eller icke-avslutande fel kan rapporteras.However, the terminating error permanently stops the pipeline, and no further output, terminating errors, or non-terminating errors can be reported.

-Cmdletar kan anropa system. Management. Automation. cmdlet. Throwterminatingerror * endast från den tråd som anropade metoden system. Management. Automation. cmdlet. BeginProcessing, system. Management. Automation. cmdlet. ProcessRecordeller system. Management. Automation. cmdlet. EndProcessing för bearbetnings metoden för indata.Cmdlets can call System.Management.Automation.Cmdlet.Throwterminatingerror* only from the thread that called the System.Management.Automation.Cmdlet.BeginProcessing, System.Management.Automation.Cmdlet.ProcessRecord, or System.Management.Automation.Cmdlet.EndProcessing input processing method. Försök inte anropa system. Management. Automation. cmdlet. Throwterminatingerror * eller system. Management. Automation. cmdlet. WriteError från en annan tråd.Do not attempt to call System.Management.Automation.Cmdlet.Throwterminatingerror* or System.Management.Automation.Cmdlet.WriteError from another thread. I stället måste fel förmedlas tillbaka till huvud tråden.Instead, errors must be communicated back to the main thread.

Det är möjligt att en cmdlet genererar ett undantag i dess implementering av metoden system. Management. Automation. cmdlet. BeginProcessing, system. Management. Automation.cmdlet. ProcessRecord eller system. Management. Automation. cmdlet. EndProcessing .It is possible for a cmdlet to throw an exception in its implementation of the System.Management.Automation.Cmdlet.BeginProcessing, System.Management.Automation.Cmdlet.ProcessRecord, or System.Management.Automation.Cmdlet.EndProcessing method. Alla undantag som har utlösts av dessa metoder (förutom några allvarliga fel villkor som stoppar Windows PowerShell-värden) tolkas som ett avslutande fel som stoppar pipelinen, men inte Windows PowerShell som helhet.Any exception thrown from these methods (except for a few severe error conditions that stop the Windows PowerShell host) is interpreted as a terminating error which stops the pipeline, but not Windows PowerShell as a whole. (Detta gäller endast för huvud-cmdlet-tråden.(This applies only to the main cmdlet thread. Ej fångade undantag i trådar som har skapats av cmdleten, i allmänhet, stoppar Windows PowerShell-värden.) Vi rekommenderar att du använder system. Management. Automation. cmdlet. Throwterminatingerror * i stället för att generera ett undantag eftersom fel posten innehåller ytterligare information om fel tillståndet, vilket är användbart för slutanvändaren.Uncaught exceptions in threads spawned by the cmdlet, in general, halt the Windows PowerShell host.) We recommend that you use System.Management.Automation.Cmdlet.Throwterminatingerror* rather than throwing an exception because the error record provides additional information about the error condition, which is useful to the end-user. Cmdlets bör respektera den hanterade kod rikt linjen för att fånga och hantera alla undantag ( catch (Exception e) ).Cmdlets should honor the managed code guideline against catching and handling all exceptions (catch (Exception e)). Konvertera endast undantag av kända och förväntade typer till fel poster.Convert only exceptions of known and expected types into error records.

Se ävenSee Also

System. Management. Automation. cmdlet. BeginProcessingSystem.Management.Automation.Cmdlet.BeginProcessing

System. Management. Automation. cmdlet. EndProcessingSystem.Management.Automation.Cmdlet.EndProcessing

System. Management. Automation. cmdlet. ProcessRecordSystem.Management.Automation.Cmdlet.ProcessRecord

System. Management. Automation. PipelineStoppedExceptionSystem.Management.Automation.Pipelinestoppedexception

System. Management. Automation. cmdlet. Throwterminatingerror *System.Management.Automation.Cmdlet.Throwterminatingerror*

System. Management. Automation. cmdlet. WriteErrorSystem.Management.Automation.Cmdlet.WriteError

Windows PowerShell-felposterWindows PowerShell Error Records

Skriva en Windows PowerShell-cmdletWriting a Windows PowerShell Cmdlet