Procédure de gestion des erreurs
Lors de la création d'applications personnalisées, les développeurs doivent mettre en place une gestion des erreurs impliquant l'écriture du code de programmation qui leur permette de déceler les erreurs générées par l'application ou de créer et de générer des erreurs personnalisées. Le modèle objet InfoPath fourni par l'espace de noms Microsoft.Office.InfoPath prend en charge la gestion des erreurs par le biais de l'utilisation de la classe FormError en association avec la classe FormErrorCollection.
Dans InfoPath, des erreurs peuvent se produire pour les raisons suivantes :
En cas d'échec de la validation de schéma XML pour des données entrées dans un formulaire.
En cas d'échec d'une contrainte de validation personnalisée.
Lorsqu'une erreur est générée par la méthode ReportError de l'objet d'événement XmlValidatingEventArgs.
Lorsqu'une erreur est créée au moyen de la méthode Add de la classe FormErrorCollection.
Présentation de la classe FormErrorCollection
La classe FormErrorCollection fournit aux développeurs les méthodes et les propriétés suivantes pour gérer les objets FormError que contient la collection.
Nom | Description |
---|---|
Méthode Add (+3 surcharges) |
Crée un objet FormError et l'ajoute à la collection. |
Méthode Delete (+1 surcharge) |
Supprime de la collection l'erreur spécifiée définie par l'utilisateur. |
Méthode DeleteAll |
Supprime tous les objets FormError contenus dans la collection. |
GetErrors (+1 surcharge) |
Renvoie tous les objets FormError du nom ou du type spécifié dans la collection. |
Propriété Count |
Récupère le nombre d'objets ErrorObject contenus dans la collection. |
Propriété Item |
Récupère une référence à un objet ErrorObject en fonction du numéro d'index spécifié. |
Présentation de la classe FormError
La classe FormError fournit les propriétés suivantes, que les développeurs de formulaires peuvent utiliser pour accéder aux informations relatives à l'erreur qui vient de se produire.
Nom | Description |
---|---|
Propriété DetailedMessage |
Récupère ou définit le message d'erreur détaillé de l'objet FormError. |
Propriété ErrorCode |
Récupère ou définit le code d'erreur de l'objet FormError. |
Propriété Site |
Récupère un objet XPathNavigator qui est placé au niveau du nœud associé à l'objet FormError. |
Propriété Message |
Récupère ou définit le message d'erreur court de l'objet FormError. |
Propriété FormErrorType |
Récupère le type de l'objet FormError. |
Utilisation des classes FormErrorCollection et FormError
L'objet FormErrorCollection associé à un formulaire est accessible par le biais de la propriété Errors de l'objet XmlForm. L'objet FormErrorCollection est associé au document XML sous-jacent d'un formulaire, de sorte que lorsqu'une erreur se produit, celui-ci et toutes les erreurs supplémentaires sont accessibles et peuvent être gérées à partir du document XML actuel. L'exemple suivant illustre l'utilisation d'une boucle pour vérifier les erreurs pouvant exister dans le document XML sous-jacent d'un formulaire. En cas d'erreur, la fonction effectue une boucle dans chacune d'elle et affiche une boîte de message au moyen de la propriété Message de l'objet FormError.
public void CheckErrors(XPathNavigator xmlNode)
{
foreach(FormError err in this.Errors)
{
if(xmlNode.InnerXml == err.Site.InnerXml)
MessageBox.Show("The following error has occured: "
+ err.Message);
}
}
Public Sub CheckErrors(ByVal xmlNode As XPathNavigator)
Dim err As FormError
For Each err In Me.Errors
If xmlNode.InnerXml = err.Site.InnerXml Then
MessageBox.Show("The following error has occured: " _
& err.Message)
End If
End Sub
La fonction précédente peut être appelée à partir de l'un des gestionnaires d'événements de validation des données du formulaire. Par exemple, lorsqu'elle est utilisée dans le gestionnaire d'événements pour l'événement Changed d'un champ dans le formulaire, l'appel de la fonction transmet l'argument de nœud XML au moyen de la propriété Site de l'objet événement XmlEventArgs comme suit.
CheckErrors(e.Site);
CheckErrors(e.Site)
En plus de gérer les erreurs générées par InfoPath, les développeurs de formulaires peuvent générer des erreurs personnalisées grâce à la méthode ReportError de l'objet d'événement XmlValidatingEventArgs ou à la méthode Add de la classe FormErrorCollection. Pour plus d'informations sur l'utilisation des méthodes ReportError ou Add, cliquez sur les liens correspondants au début de cette rubrique.
Gestion des exceptions de code managé
Vous pouvez utiliser la gestion d'exceptions try-catch pour gérer les exceptions qui apparaissent dans le modèle de formulaire avec code managé tel qu'illustré par l'exemple de code ci-dessous.
FileQueryConnection queryXMLFile =
(FileQueryConnection)this.DataConnections["form1"];
// Perform the query.
try
{
queryXMLFile.Execute();
}
catch (Exception ex)
{
MessageBox.Show("Failed to query." + System.Environment.NewLine
+ ex.Message);
}
Dim queryXMLFile As FileQueryConnection = _
DirectCast(Me.DataConnections("form1"), FileQueryConnection)
' Perform the query.
Try
queryXMLFile.Execute();
Catch ex As Exception
MessageBox.Show("Failed to query." & System.Environment.NewLine
& ex.Message)
End Try
Si vous n'utilisez pas la gestion d'exceptions try-catch dans le code du formulaire, InfoPath affiche des informations sur les exceptions non gérées dans la boîte de dialogue d'erreurs d'InfoPath lors du débogage et de l'aperçu. De plus, par défaut, les exceptions non gérées ne sont pas affichées dans la boîte de dialogue d'erreurs d'InfoPath lors de l'exécution lorsque vous déployez votre modèle de formulaire avec code managé. Pour afficher des informations sur les exceptions non gérées à l'exécution, utilisez la procédure suivante.
Activation des notifications pour les exceptions de code managé non gérées lors de l'exécution
Ouvrez InfoPath.
Dans le menu Outils, cliquez sur Options.
Sous l'onglet Avancé, activez la case à cocher Afficher une notification pour les erreurs de code Visual Basic et C#.