Errori irreversibiliTerminating Errors

In questo argomento viene illustrato il metodo utilizzato per segnalare gli errori di terminazione.This topic discusses the method used to report terminating errors. Viene inoltre illustrato come chiamare il metodo dall'interno del cmdlet e vengono illustrate le eccezioni che possono essere restituite dal runtime di Windows PowerShell quando viene chiamato il metodo.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.

Quando si verifica un errore di terminazione, il cmdlet deve segnalare l'errore chiamando il metodo 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. Questo metodo consente al cmdlet di inviare un record di errore che descrive la condizione che ha causato l'errore di terminazione.This method allows the cmdlet to send an error record that describes the condition that caused the terminating error. Per ulteriori informazioni sui record degli errori, vedere la pagina relativa ai record degli errori di Windows PowerShell.For more information about error records, see Windows PowerShell Error Records.

Quando viene chiamato il metodo System. Management. Automation. cmdlet. ThrowTerminatingError * , il runtime di Windows PowerShell interrompe in modo permanente l'esecuzione della pipeline e genera un'eccezione System. Management. Automation. Pipelinestoppedexception .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. Eventuali tentativi successivi di chiamare System. Management. Automation. cmdlet. WriteObject, System. Management. Automation. cmdlet. WriteErroro diverse altre API causano la generazione di un'eccezione System. Management. Automation. Pipelinestoppedexception da tali chiamate.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.

L'eccezione System. Management. Automation. Pipelinestoppedexception può verificarsi anche se un altro cmdlet della pipeline segnala un errore irreversibile, se l'utente ha richiesto di arrestare la pipeline o se la pipeline è stata interrotta prima del completamento per qualsiasi motivo.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. Non è necessario che il cmdlet intercettare l'eccezione System. Management. Automation. Pipelinestoppedexception a meno che non sia necessario pulire le risorse aperte o il relativo stato interno.The cmdlet does not need to catch the System.Management.Automation.Pipelinestoppedexception exception unless it must clean up open resources or its internal state.

I cmdlet possono scrivere un numero qualsiasi di oggetti di output o errori non fatali prima di segnalare un errore di terminazione.Cmdlets can write any number of output objects or non-terminating errors before reporting a terminating error. Tuttavia, l'errore di terminazione interrompe in modo permanente la pipeline e non è possibile segnalare ulteriori output, errori di terminazione o errori non fatali.However, the terminating error permanently stops the pipeline, and no further output, terminating errors, or non-terminating errors can be reported.

I cmdlet possono chiamare System. Management. Automation. cmdlet. ThrowTerminatingError * solo dal thread che ha chiamato il Metodo System. Management. Automation. cmdlet. BeginProcessing, System. Management. Automation. cmdlet. ProcessRecordo System. Management. Automation. cmdlet. EndProcessing .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. Non tentare di chiamare System. Management. Automation. cmdlet. ThrowTerminatingError * o System. Management. Automation. cmdlet. WriteError da un altro thread.Do not attempt to call System.Management.Automation.Cmdlet.Throwterminatingerror* or System.Management.Automation.Cmdlet.WriteError from another thread. Al contrario, gli errori devono essere comunicati nuovamente al thread principale.Instead, errors must be communicated back to the main thread.

Un cmdlet può generare un'eccezione nell'implementazione del metodo System. Management. Automation. cmdlet. BeginProcessing, System. Management. Automation. cmdlet. ProcessRecordo 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. Qualsiasi eccezione generata da questi metodi (ad eccezione di alcune condizioni di errore gravi che arrestano l'host di Windows PowerShell) viene interpretata come un errore irreversibile che interrompe la pipeline, ma non Windows PowerShell nel suo complesso.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. (Si applica solo al thread del cmdlet principale).(This applies only to the main cmdlet thread. Le eccezioni non rilevate nei thread generati dal cmdlet, in generale, interrompono l'host di Windows PowerShell. Si consiglia di usare System. Management. Automation. cmdlet. ThrowTerminatingError * anziché generare un'eccezione perché il record di errore fornisce informazioni aggiuntive sulla condizione di errore, che risulta utile per l'utente finale.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. I cmdlet devono rispettare le linee guida per il codice gestito rispetto a intercettare e gestire tutte le eccezioni ( catch (Exception e) ).Cmdlets should honor the managed code guideline against catching and handling all exceptions (catch (Exception e)). Converte solo le eccezioni dei tipi noti e previsti nei record degli errori.Convert only exceptions of known and expected types into error records.

Vedere ancheSee 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

Record degli errori di Windows PowerShellWindows PowerShell Error Records

Scrittura di un cmdlet di Windows PowerShellWriting a Windows PowerShell Cmdlet