Chaque exception non réglée dans POS sera représentée sous forme d’une vue de message et enregistrée dans le fichier du journal d’événements. La fenêtre se compose du titre d’erreur et de son contenu. Si l’exception est du type System.Exception ou hérite de lui, le titre d’erreur sera le type d’exception et le contenu sera son Message. L’information enregistrée dans le journal d’événements contiendra le type d’exception, le contenu Message et la pile d’appel. Cette solution n’est pas trop douée, car l’utilisateur ne doit pas s’interroger quand il voit des titres bizarres comme : NullReferenceException.
Une meilleure solution est d’utiliser la classe Comarch.POS.Library.Erros.RetailException. Cette classe hérite de System.Exception et introduit deux propriétés supplémentaires qui sont par défaut prédéfinies. C’est la propriété UITitle utilisée à afficher le titre d’erreur et UIMessage utilisée à afficher le contenu plus adapté aux besoins de l’utilisateur. Le contenu est bien sûr localisé dans les langues pris en charge par POS. Comme dans le cas précédent, le type d’exception, son contenu original et la pile d’appel sont tous enregistrés dans le journal d’événements. Pour définir un titre et/ou un contenu personnalisé, il faut créer un nouveau type d’exception héritant de la classe RetailException et surcharger les propriétés appropriées.
Dans l’application POS est définie une dizaine des types dérivés du RetailException. Le tablau ci-dessus présente une liste exemplaire incomplète avec le contenu d’UITitle et UIMessage pour la langue polonaise.
Type d’exception | UITitle | UIMessage |
RetailException | Erreur système | Une erreur inconnue s’est produite |
RetailSecurityException | Accès refusé | Une erreur inconnue s’est produite |
RetailVoucherException | Gestion des bons d’achat | Une erreur inconnue s’est produite |
RetailVoucherBlockedException | Gestion des bons d’achat | Le bon d’achat {0} est bloqué. |