Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

CoqBlog

.NET is good :-)
{ Blog de coq }

Actualités

A propos des notifications d’exceptions non gérées - 2 - Les différentes raisons

Cet article est composé de plusieurs parties :

 

Quelles sont donc ces raisons pour lesquelles la réponse est “non” ?

La première est en rapport direct avec “je” : ce n’est pas parce que l’exception n’est pas gérée dans notre code (celui dont nous sommes les auteurs) qu’elle ne le sera pas par le code (d’un tiers) que nous allons utiliser pour exécuter le notre.
Ce cas se présente avec l’utilisation du BackgroundWorker.

La seconde raison d’une absence de notification via l’évènement AppDomain.UnhandledException est qu’il existe, suivant le contexte d’exécution, d’autres moyens de notification similaires comme par exemple System.Windows.Forms.Application.ThreadException (WinForms) ou System.Windows.Application.DispatcherUnhandledException / System.Windows.Threading.Dispatcher.UnhandledException (WPF).
Ces éléments sont susceptibles de traiter certains problèmes en amont et donc d’empêcher la notification via AppDomain.UnhandledException.
(Je ne parle pas de l’évènement My.Application.UnhandledException disponible en VB.NET, qui à ma connaissance repose sur System.Windows.Forms.Application.ThreadException).

 

 

Le cas de l’utilisation de BackgroundWorker

Si nous utilisons le BackgroundWorker pour exécuter un code pouvant lever une exception non gérée, nous n’aurons pas de notification par un des évènements précédemment cités.
Ceci est tout simplement dû au fait qu’à l’exécution du code spécifié, le BackgroundWorker effectue une gestion d’exception afin de pouvoir la notifier via son évènement RunWorkerCompleted, plus précisément au travers de la propriété AsyncCompletedEventArgs.Error.
Si vous ne vous préoccupez pas de cette propriété, les exceptions non gérées du code passeront inaperçues.

 

Petit exemple d’utilisation de l’évènement RunWorkerCompleted en traitant les erreurs :

void worker_RunWorkerCompleted(Object sender, RunWorkerCompletedEventArgs e)
{
 
if (e.Cancelled)
 
{
   
// Si le traitement a été annulé
  }

 
else if (e.Error != null)
 
{
   
// Si une erreur (exception non gérée) est intervenue 
   
// durant le traitement 

   
Exception ex = e.Error;

   
// Nous traitons le cas où l'exception est de type 
   
// MyException
    if (ex is MyException)

   
{
     
// Traitement de l’erreur
   
}
   
else
   
{
     
// Nous ne savons pas gérer cette erreur 
      throw new BackgroundOperationFailedException(ex);

   
}
 
}
 
else
 
{
   
// Le traitement s'est terminé correctement
  }

}

 

La suite : 3 - Zoom sur Application.ThreadException (WinForms)

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 :
Posted: dimanche 26 octobre 2008 12:58 par coq
Classé sous : , ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Microsoft Regional Director 2.0 ! par Le blog de Patrick [MVP Office 365] le 02-23-2015, 22:10

- TechDays Paris 2015: Malware unchained par Blog Technique de Romelard Fabrice le 02-12-2015, 22:58

- TechDays Paris 2015: La transformation du SI avec le Cloud Microsoft, quel sera le rôle de la DSI demain, comment le Cloud MS accompagne cette transfo... par Blog Technique de Romelard Fabrice le 02-12-2015, 22:51

- TechDays Paris 2015: L’intranet social avec Office 365 et Yammer - quelles possibilités d’intégration ? par Blog Technique de Romelard Fabrice le 02-12-2015, 22:46

- TechDays Paris 2015: Plenière jour 3 - Vers une technologie invisible et une intelligence omniprésente ? par Blog Technique de Romelard Fabrice le 02-12-2015, 10:59

- TechDays Paris 2015: Geek is in da {new} House par Blog Technique de Romelard Fabrice le 02-12-2015, 01:13

- TechDays Paris 2015: Windows Server vNext - Virtualisation et Stockage par Blog Technique de Romelard Fabrice le 02-12-2015, 00:26

- TechDays Paris 2015: Quoi de neuf dans Windows 10 ? par Blog Technique de Romelard Fabrice le 02-11-2015, 23:37

- TechDays Paris 2015: Réussir sa migration vers Office 365 en formant les uilisateurs par Blog Technique de Romelard Fabrice le 02-11-2015, 14:32

- TechDays Paris 2015: Windows 10 et PowerShell 5.0 par Blog Technique de Romelard Fabrice le 02-11-2015, 13:10