Procédure de gestion des erreurs en utilisant le modèle objet InfoPath 2003
Lors de la création d'applications personnalisées, les développeurs doivent mettre en place une gestion des erreurs impliquant l'écriture de 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 compatible avec InfoPath 2003 prend en charge la gestion des erreurs à travers l'utilisation de l'objet ErrorObject en association avec la collection ErrorsCollection.
Dans InfoPath, une erreur se produit lorsque des données entrées dans un formulaire échouent à la validation du schéma XML, lorsqu'une contrainte de validation personnalisée échoue, lorsqu'une erreur est générée par la méthode ReportError de l'objet DataDOMEventObject, ou lorsqu'une erreur est générée via la méthode Add de la collection ErrorsCollection.
Vue d'ensemble de la collection ErrorsCollection
La collection ErrorsCollection fournit aux développeurs les méthodes et les propriétés suivantes pour gérer les objets ErrorObject que contient la collection.
Nom | Description |
---|---|
Méthode Add |
Crée un objet ErrorObject et l'ajoute à la collection. |
Méthode Delete |
Supprime tous les objets ErrorObject associés au nœud XML et au nom de la condition spécifiés, sauf pour les erreurs personnalisées ajoutées à l'aide de la méthode ReportError. |
Méthode DeleteAll |
Supprime tous les objets ErrorObject contenus 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é. |
Vue d'ensemble de l'objet ErrorObject
L'objet ErrorObject 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é ConditionName |
Récupère le nom de l'erreur ou renvoie null, en fonction du type de l'objet ErrorObject. |
Propriété DetailedErrorMessage |
Récupère ou définit le message d'erreur détaillé de l'objet ErrorObject. |
Propriété ErrorCode |
Récupère ou définit le code d'erreur de l'objet ErrorObject. |
Propriété Node |
Récupère une référence au nœud XML associé à l'objet ErrorObject. |
Propriété ShortErrorMessage |
Récupère ou définit le message d'erreur court de l'objet ErrorObject. |
Propriété ErrorType |
Récupère le type de l'objet ErrorObject. |
Utilisation de ErrorsCollection et ErrorObject
La collection ErrorsCollection est accessible via la propriété Errors de l'objet XDocument. La collection ErrorsCollection est associée au document XML sous-jacent du formulaire de sorte que lorsqu'une erreur se produit, elle se produit dans le document XML. L'exemple qui suit démontre comment une boucle Visual C# foreach peut être utilisée pour vérifier la présence d'erreur dans le document XML sous-jacent d'un formulaire. S'il existe des erreurs, la fonction crée une boucle autour d'elles et, à l'aide de la propriété ShortErrorMessage de l'objet ErrorObject, affiche un message pour l'utilisateur.
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 fonction précédente peut être appelée à partir d'un des gestionnaires d'événements de validation des données du formulaire. Par exemple, lorsqu'il est utilisé dans le gestionnaire d'événements OnAfterChange d'un champ du formulaire, l'appel à la fonction transmet l'argument du nœud XML à l'aide de la propriété Site de l'objet DataDOMEventObject comme suit :
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 DataDOMEventObject ou à la méthode Add de la collection ErrorsCollection. Pour plus d'informations sur l'utilisation des méthodes ReportError ou Add, cliquez sur celles-ci 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.
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 vous n'utilisez pas la gestion d'exceptions try-catch dans le code de votre 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 dans Visual Studio .NET. 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 les 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 managé.