[Windows Mobile] Afficher une fenêtre lors d’une exception non gérée
Personne n’est à l’abri d’une exception non gérée, c’est à dire une exception que vous n’avez pas “catché” et qui fait planter méchamment votre application. Heureusement il est possible de détecter ce type de plantage et d’afficher une fenêtre.
Pour récupérer les exceptions non gérées, vous devez utiliser l’évènement UnhandledException comme suivant (d’ailleurs cela devrait être la première instruction de la plupart des applications .NET) :
AppDomain.CurrentDomain.UnhandledException +=
CurrentDomain_UnhandledException;
Ensuite, il est possible d’y afficher une fenêtre afin d’informer l’utilisateur qu’une erreur est survenue.
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
using (ErrorForm form = new ErrorForm(e.ExceptionObject as Exception))
{
form.ShowDialog();
}
}
Problème le code-ci dessous ne vous affichera pas la fenêtre !? En effet la méthode ShowDialog retournera directement DialogResult.None.
En fait, l’état plutôt instable de l’application lors d’une exception non gérée fait que votre fenêtre peut recevoir des messages erronées depuis la boucle de messages Win32.
Pour palier ce problème vous pouvez utiliser la méthode Application.DoEvents() comme le montre le code suivant :
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Application.DoEvents();
using (ErrorForm form = new ErrorForm(e.ExceptionObject as Exception))
{
form.ShowDialog();
}
}
Et voilà : ca marche !
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :