Condividi tramite


Procedura: Gestire gli errori tramite il modello a oggetti di InfoPath 2003

Durante la creazione di applicazioni personalizzate, gli amministratori devono spesso eseguire operazioni di gestione degli errori che comportano la scrittura di codice di programmazione per verificare gli errori generati dall'applicazione oppure per creare e segnalare errori personalizzati. Il modello a oggetti compatibile con InfoPath 2003 supporta la gestione degli errori tramite l'oggetto ErrorObject e l'insieme ErrorsCollection.

In InfoPath possono verificarsi errori quando i dati immessi in un modulo non superano la convalida dello scherma XML, quando un vincolo di convalida personalizzato non viene soddisfatto, quando viene generato un errore dal metodo ReportError dell'oggetto DataDOMEventObject oppure quando si crea un errore utilizzando il metodo Add dell'insieme ErrorsCollection.

Informazioni generali sull'insieme ErrorsCollection

L'insieme ErrorsCollection implementa i metodi e le proprietà seguenti, che gli sviluppatori di moduli possono utilizzare per gestire gli oggetti ErrorObject contenuti nell'insieme.

Nome Descrizione

Metodo Add

Crea un oggetto ErrorObject e lo aggiunge all'insieme.

Metodo Delete

Elimina tutti gli oggetti ErrorObject associati al nodo XML e al nome di condizione specificati, ad eccezione degli errori aggiunti utilizzando il metodo ReportError.

Metodo DeleteAll

Elimina tutti gli oggetti ErrorObject contenuti nell'insieme.

Proprietà Count

Calcola il numero di oggetti ErrorObject contenuti nell'insieme.

Proprietà Item

Ottiene un riferimento a un oggetto ErrorObject in base al numero di indice specificato.

Informazioni generali sull'oggetto ErrorObject

L'oggetto ErrorObject implementa le proprietà seguenti, che gli sviluppatori di moduli possono utilizzare per accedere alle informazioni sull'errore generato.

Nome Descrizione

Proprietà ConditionName

Ottiene il nome della condizione di errore oppure restituisce un valore null, a seconda del tipo di oggetto ErrorObject.

Proprietà DetailedErrorMessage

Ottiene o imposta il messaggio di errore dettagliato dell'oggetto ErrorObject.

Proprietà ErrorCode

Ottiene o imposta il codice di errore dell'oggetto ErrorObject.

Proprietà Node

Ottiene un riferimento al nodo XML associato all'oggetto ErrorObject.

Proprietà ShortErrorMessage

Ottiene o imposta il messaggio di errore breve dell'oggetto ErrorObject.

Proprietà ErrorType

Ottiene il tipo di oggetto ErrorObject.

Utilizzo di ErrorsCollection ed ErrorObject

È possibile accedere all'insieme ErrorsCollection tramite la proprietà Errors dell'oggetto XDocument. Poiché l'insieme ErrorsCollection è associato al documento XML sottostante di un modulo, gli eventuali errori si verificano nel documento XML. Nell'esempio seguente viene illustrato come utilizzare un ciclo Visual C# foreach per verificare la presenza di errori nel documento XML sottostante di un modulo. In caso di errori, la funzione esegue un ciclo in tutti gli errori e visualizza all'utente una finestra di messaggio tramite la proprietà ShortErrorMessage dell'oggetto ErrorObject.

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 + ".");
   }
}

La funzione precedente può essere chiamata da uno dei gestori eventi di convalida dei dati del modulo. Se, ad esempio, viene utilizzata nel gestore eventi OnAfterChange di un campo del modulo, la chiamata alla funzione passa l'argomento del nodo XML utilizzando la proprietà Site dell'oggetto DataDOMEventObject, come illustrato di seguito.

CheckErrors(e.Site);

Oltre a gestire gli errori generati da InfoPath, gli sviluppatori di moduli possono generare errori personalizzati tramite il metodo ReportError dell'oggetto DataDOMEventObject o il metodo Add dell'insieme ErrorsCollection. Per informazioni sull'utilizzo del metodo ReportError o Add, fare clic sui metodi all'inizio di questo argomento.

Gestione delle eccezioni del codice gestito

È possibile utilizzare la gestione degli errori try-catch per gestire eccezioni generate in un modello di modulo con codice gestito, come illustrato nell'esempio seguente.

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);
}

Se non si utilizza la gestione delle eccezioni try-catch nel codice del modulo, vengono visualizzate informazioni sulle eccezioni non gestite nella finestra di dialogo degli errori di InfoPath durante il debug e l'anteprima in Visual Studio .NET. Per impostazione predefinita, inoltre, le eccezioni non gestite non vengono visualizzate nella finestra di dialogo degli errori di InfoPath in fase di esecuzione quando si distribuisce il modello di modulo con codice gestito. Per visualizzare informazioni sulle eccezioni non gestite in fase di esecuzione, eseguire la procedura seguente.

Attivare le notifiche per le eccezioni non gestite del codice gestito in fase di esecuzione

  1. Aprire InfoPath.

  2. Scegliere Opzioni dal menu Strumenti.

  3. Nella scheda Avanzate selezionare la casella di controllo Mostra notifica per errori del codice gestito.