Compartir a través de


Cómo: Controlar los errores con el modelo de objetos de InfoPath 2003

Al crear aplicaciones personalizadas, los programadores deben con frecuencia controlar errores, lo que supone escribir código de programación para comprobar los errores generados por la aplicación o para crear y generar errores personalizados. El modelo de objetos compatible con InfoPath 2003 admite el control de errores mediante el uso del objeto ErrorObject en asociación con la colección ErrorsCollection.

En InfoPath, se pueden producir errores cuando al introducir datos en un formulario se genera un error en la validación del esquema XML, cuando se produce un error en una restricción de validación personalizada, cuando el método ReportError del objeto DataDOMEventObject genera un error o cuando se crea un error con el método Add de la colección ErrorsCollection.

Información general sobre la colección ErrorsCollection

La colección ErrorsCollection proporciona los siguientes métodos y propiedades que los programadores de formularios pueden utilizar para administrar los objetos ErrorObject que contiene.

Nombre Descripción

Método Add

Crea un objeto ErrorObject y lo agrega a la colección.

Método Delete

Elimina todos los objetos ErrorObject asociados al nodo XML especificado y al nombre de la condición, excepto los errores personalizados agregados mediante el método ReportError.

Método DeleteAll

Elimina todos los objetos ErrorObject contenidos en la colección.

Propiedad Count

Obtiene el número de objetos ErrorObject contenidos en la colección.

Propiedad Item

Obtiene una referencia a un objeto ErrorObject basada en el número de índice especificado.

Información general sobre el objeto ErrorObject

El objeto ErrorObject proporciona las siguientes propiedades que pueden usar los programadores de formularios para tener acceso a la información sobre el error que se produjo.

Nombre Descripción

Propiedad ConditionName

Obtiene el nombre de la condición de error o devuelve el valor null, en función del tipo de objeto ErrorObject.

Propiedad DetailedErrorMessage

Obtiene o establece el mensaje de error detallado del objeto ErrorObject.

Propiedad ErrorCode

Obtiene o establece el código de error del objeto ErrorObject.

Propiedad Node

Obtiene una referencia al nodo XML asociado al objeto ErrorObject.

Propiedad ShortErrorMessage

Obtiene o establece el mensaje de error breve del objeto ErrorObject.

Propiedad ErrorType

Obtiene el tipo del objeto ErrorObject.

Uso de ErrorsCollection y ErrorObject

A la colección ErrorsCollection se tiene acceso a través de la propiedad Errors del objeto XDocument. La colección ErrorsCollection está asociada al documento XML subyacente de un formulario, de modo que cuando se produce un error, se produce dentro del documento XML. En el siguiente ejemplo se muestra cómo usar un bucle foreach de Visual C# para comprobar si existen errores en el documento subyacente de un formulario. En caso afirmativo, la función recorre en bucle todos ellos y, utilizando la propiedad ShortErrorMessage del objeto ErrorObject, muestra un cuadro de mensaje al usuario.

public void CheckErrors(IXMLDOMNode xmlNode)
{
   foreach(ErrorObject err in thisXDocument.Errors)
   {
      if(xmlNode==err.Node)
         thisXDocument.UI.Alert("The following error has occured: "
             + err.ShortErrorMessage + ".");
   }
}

A la función anterior se puede llamar desde uno de los controladores de eventos de validación de datos del formulario. Por ejemplo, cuando se utiliza en el evento OnAfterChange de un campo del formulario, la llamada a la función transmitiría el argumento del nodo XML usando la propiedad Site del objeto DataDOMEventObject como se muestra a continuación.

CheckErrors(e.Site);

Además de controlar los errores generados por InfoPath, los programadores de formularios producen errores personalizados, utilizando el método ReportError del objeto DataDOMEventObject, o bien utilizando el método Add de la colección ErrorsCollection. Para obtener información sobre el uso de los métodos ReportError o Add, haga clic en los métodos, que figuran al principio de este tema.

Controlar las excepciones de código administrado

Puede utilizar el control de las excepciones try-catch para controlar las excepciones que se produzcan en una plantilla de formulario con código administrado, tal como se muestra en el siguiente ejemplo de código.

DataAdapters dataAdapters;
dataAdapters = thisXDocument.DataAdapters; 
XMLFileAdapterObject queryXMLFile = 
   (XMLFileAdapterObject)dataAdapters["form1"];
// Perform the query.
try
{
   queryXMLFile.Query();
}

catch (Exception ex)
{
   thisXDocument.UI.Alert("Failed to query.\n\n" + ex.Message);
}

// Perform the submit.
try
{
   queryXMLFile.Submit();
}

catch (Exception ex)
{
   thisXDocument.UI.Alert("Failed to submit.\n\n" + ex.Message);
}

Si no utiliza el control de las excepciones try-catch en el código del formulario, InfoPath mostrará información sobre las excepciones no controladas en el cuadro de diálogo de errores de InfoPath mientras se depuran y se obtiene una vista previa en Visual Studio .NET. Además, de manera predeterminada, estas excepciones no se muestran en el cuadro de diálogo de errores de InfoPath en tiempo de ejecución al implementar una plantilla de formulario con código administrado. Para mostrar información sobre las excepciones no controladas en tiempo de ejecución, utilice este procedimiento.

Habilitar las notificaciones sobre excepciones de código administrado no controladas en tiempo de ejecución

  1. Abra InfoPath.

  2. En el menú Herramientas, haga clic en Opciones.

  3. En la ficha Avanzadas, active la casilla Mostrar una notificación para los errores de código administrado.