Interpretación de los objetos ErrorRecordInterpreting ErrorRecord Objects

En la mayoría de los casos, un objeto System. Management. Automation. ErrorRecord representa un error de no terminación generado por un comando o script.In most cases, an System.Management.Automation.ErrorRecord object represents a non-terminating error generated by a command or script. Los errores de terminación también pueden especificar la información adicional en un ErrorRecord a través de la interfaz System. Management. Automation. Icontainserrorrecord .Terminating errors can also specify the additional information in an ErrorRecord via the System.Management.Automation.Icontainserrorrecord interface.

Si desea escribir un controlador de errores en el script o en un host para controlar los errores específicos que se producen durante la ejecución de comandos o scripts, debe interpretar el objeto System. Management. Automation. ErrorRecord para determinar si representa la clase de error que desea controlar.If you want to write an error handler in your script or a host to handle specific errors that occur during command or script execution, you must interpret the System.Management.Automation.ErrorRecord object to determine whether it represents the class of error that you want to handle.

Cuando un cmdlet encuentra un error de terminación o de no terminación, debe crear un registro de error que describa la condición de error.When a cmdlet encounters a terminating or non-terminating error, it should create an error record that describes the error condition. La aplicación host debe investigar estos registros de errores y realizar cualquier acción que mitigará el error.The host application must investigate these error records and perform whatever action will mitigate the error. La aplicación host también debe investigar los registros de errores en busca de errores de no terminación que no hayan podido procesar un registro pero hayan podido continuar, y debe investigar los registros de errores para finalizar los errores que provocaron la detención de la canalización.The host application must also investigate error records for nonterminating errors that failed to process a record but were able to continue, and it must investigate error records for terminating errors that caused the pipeline to stop.

Nota

Para los errores de terminación, el cmdlet llama al método System. Management. Automation. cmdlet. Throwterminatingerror * .For terminating errors, the cmdlet calls the System.Management.Automation.Cmdlet.Throwterminatingerror* method. En el caso de los errores de no terminación, el cmdlet llama al método System. Management. Automation. cmdlet. WriteError .For non-terminating errors, the cmdlet calls the System.Management.Automation.Cmdlet.WriteError method.

Diseño de registro de erroresError Record Design

Los registros de errores están diseñados para proporcionar información de error adicional que no está disponible en las excepciones a la vez que se garantiza que la información combinada en cada registro de errores sea única.Error records are designed to provide additional error information that is not available in exceptions while ensuring that the combined information in each error record is unique. Esta unicidad permite a la aplicación host inspeccionar las distintas partes del registro de errores para que pueda identificar la condición de error y la acción que debe realizar el host.This uniqueness allows the host application to inspect the different parts of the error record so that it can identify the error condition and the action the host must take.

Interpretar registros de erroresInterpreting Error Records

Puede revisar varias partes del registro de errores para identificar el error.You can review several parts of the error record to identify the error. Entre estas partes se incluyen las siguientes:These parts include the following:

  • La categoría de errorThe error category

  • Excepción de errorThe error exception

  • El identificador de error completo (FQID)The fully qualified error identifier (FQID)

  • Otra informaciónOther information

La categoría de errorThe Error Category

La categoría de error del registro de errores es una de las constantes predefinidas que proporciona la enumeración System. Management. Automation. errorCategory .The error category of the error record is one of the predefined constants provided by the System.Management.Automation.Errorcategory enumeration. Esta información está disponible a través de la propiedad System. Management. Automation. ErrorRecord. CategoryInfo del objeto System. Management. Automation. ErrorRecord .This information is available through the System.Management.Automation.ErrorRecord.CategoryInfo property of the System.Management.Automation.ErrorRecord object.

El cmdlet puede especificar las categorías CloseError, OpenError, InvalidType, ReadError y WriteError y otras categorías de error.The cmdlet can specify the CloseError, OpenError, InvalidType, ReadError, and WriteError categories, and other error categories. La aplicación host puede usar la categoría de error para capturar grupos de errores.The host application can use the error category to capture groups of errors.

La excepciónThe Exception

El cmdlet proporciona la excepción incluida en el registro de errores y se puede acceder a ella a través de la propiedad System. Management. Automation. ErrorRecord. Exception * del objeto System. Management. Automation. ErrorRecord .The exception included in the error record is provided by the cmdlet and can be accessed through the System.Management.Automation.ErrorRecord.Exception* property of the System.Management.Automation.ErrorRecord object.

Las aplicaciones host pueden utilizar la is palabra clave para identificar que la excepción es de una clase concreta o de una clase derivada.Host applications can use the is keyword to identify that the exception is of a specific class or of a derived class. Es mejor bifurcar en el tipo de excepción, tal y como se muestra en el ejemplo siguiente.It is better to branch on the exception type, as shown in the following example.

if (MyNonTerminatingError.Exception is AccessDeniedException)

De este modo, se detectan las clases derivadas.This way, you catch the derived classes. Sin embargo, hay problemas si se deserializa la excepción.However, there are problems if the exception is deserialized.

FQIDThe FQID

FQID es la información más específica que puede usar para identificar el error.The FQID is the most specific information you can use to identify the error. Es una cadena que incluye un identificador definido por el cmdlet, el nombre de la clase de cmdlet y el origen que ha generado el error.It is a string that includes a cmdlet-defined identifier, the name of the cmdlet class, and the source that reported the error. En general, un registro de error es análogo a un registro de eventos de un registro de eventos de Windows.In general, an error record is analogous to an event record of a Windows Event log. FQID es análogo a la siguiente tupla, que identifica la clase del registro de eventos: (nombre de registro, origen, ID. de evento).The FQID is analogous to the following tuple, which identifies the class of the event record: (log name, source, event ID).

FQID está diseñado para ser inspeccionado como una sola cadena.The FQID is designed to be inspected as a single string. Sin embargo, existen casos en los que el identificador de error está diseñado para ser analizado por la aplicación host.However, cases exist in which the error identifier is designed to be parsed by the host application. El ejemplo siguiente es un identificador de error completo con formato correcto.The following example is a well-formed fully qualified error identifier.

CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.

En el ejemplo anterior, el primer token es el identificador de error, que va seguido del nombre de la clase de cmdlet.In the previous example, the first token is the error identifier, which is followed by the name of the cmdlet class. El identificador de error puede ser un token único o puede ser un identificador separado por puntos que permita la bifurcación en la inspección del identificador.The error identifier can be a single token, or it can be a dot-separated identifier that allows for branching on inspection of the identifier. No use espacios en blanco ni signos de puntuación en el identificador de error.Do not use white space or punctuation in the error identifier. Es especialmente importante no usar una coma; Windows PowerShell usa una coma para separar el identificador y el nombre de la clase de cmdlet.It is especially important not to use a comma; a comma is used by Windows PowerShell to separate the identifier and the cmdlet class name.

Otra informaciónOther Information

El objeto System. Management. Automation. ErrorRecord también podría proporcionar información que describe el entorno en el que se produjo el error.The System.Management.Automation.ErrorRecord object might also provide information that describes the environment in which the error occurred. Esta información incluye elementos como detalles del error, información de invocación y el objeto de destino que se estaba procesando cuando se produjo el error.This information includes items such as error details, invocation information, and the target object that was being processed when the error occurred. Aunque esta información puede ser útil para la aplicación host, normalmente no se utiliza para identificar el error.Although this information might be useful to the host application, it is not typically used to identify the error. Esta información está disponible a través de las siguientes propiedades:This information is available through the following properties:

System. Management. Automation. ErrorRecord. ErrorDetailsSystem.Management.Automation.ErrorRecord.ErrorDetails

System. Management. Automation. ErrorRecord. InvocationInfoSystem.Management.Automation.ErrorRecord.InvocationInfo

System. Management. Automation. ErrorRecord. TargetObjectSystem.Management.Automation.ErrorRecord.TargetObject

Consulte tambiénSee Also

System. Management. Automation. ErrorRecordSystem.Management.Automation.ErrorRecord

System. Management. Automation. errorCategorySystem.Management.Automation.Errorcategory

System. Management. Automation. ErrorcategoryinfoSystem.Management.Automation.Errorcategoryinfo

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

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

Adición de informes de errores de no terminación al cmdletAdding Non-Terminating Error Reporting to Your Cmdlet

Informes de errores de Windows PowerShellWindows PowerShell Error Reporting

Escribir un cmdlet de Windows PowerShellWriting a Windows PowerShell Cmdlet