2012-08-17 2 views
2

J'utilise une bibliothèque tierce dans mon code. L'une des méthodes de la bibliothèque tierce consiste à obtenir un thread du pool de threads et à travailler dessus. Malheureusement, il lance une exception de son fil que je suis incapable d'attraper et de manipuler car il provient d'un fil différent.Exception générée par un thread dans une bibliothèque tierce

Je sais que cette exception ne causera aucun problème à l'application (il ne s'agit pas d'une exception de mémoire insuffisante ou de quelque chose de similaire), donc je souhaite la connecter et réessayer plus tard .

Je suis actuellement en train de consigner l'exception en utilisant l'événement AppDomain UnhandledException, mais mon application est toujours terminée. Est-il possible que je puisse attraper cette exception et la gérer?

Répondre

2

Il est vraiment difficile d'attraper des exceptions à travers les threads, en fait, je pense que c'est impossible.

La seule solution consiste à vérifier si la bibliothèque tierce dispose d'une routine de rappel qui peut vous informer des exceptions.

Vérifiez les docs/api pour la bibliothèque.

+0

J'ai eu ce problème avec 0MQ qui est une bibliothèque de threads. Ils se terminaient au lieu de lancer l'exception correctement, donc je vérifierais la source de la bibliothèque si elle est disponible. – FaddishWorm

+0

+1. Pas possible. Vous pouvez utiliser l'événement 'AppDomain.CurrentDomain.UnhandledException' pour recevoir l'exception. Mais cela n'empêchera pas l'application de se bloquer. Mais vous pouvez au moins redémarrer à partir de là. ('Process.Start()') – jgauffin

Questions connexes