J'utilise une interface utilisateur PyQt4. J'ai redirigé stderr vers un fichier journal pour faciliter le débogage et le dépannage, mais maintenant je dois afficher des messages d'erreur à l'utilisateur lorsqu'une erreur survient. Mon problème est que j'ai besoin d'attraper une exception quand cela se produit et de laisser l'utilisateur savoir que cela s'est produit, tout en laissant la trace remonter à stderr (c'est-à-dire le fichier journal).Comment afficher les erreurs à l'utilisateur tout en l'enregistrant?
Si je fais quelque chose comme ceci:
def updateResults(self):
try:
#code that updates the results
except:
#display error message box
Cela va attraper l'exception et non dans le journal se propager d'erreur.
Existe-t-il un moyen d'afficher le message à l'utilisateur et de continuer à propager l'erreur?
Est-ce que cela fonctionnerait?
except, e:
#display error message box
raise e
Y a-t-il une meilleure façon d'atteindre mon objectif?
Je vais certainement utiliser cette méthode pour les projets futurs. En ce moment, py2exe fait la redirection de 'stderr', donc à moins que je refactorise mon code pour essayer-excepté les blocs autour de * chaque * fonction je finirai avec deux fichiers journaux (exceptions capturées et non-interceptées). – tgray
Fondamentalement, l'avantage de mettre en œuvre cette méthode ne vaut pas le temps de refactoring pour * ce * projet. – tgray
Gardez à l'esprit (tgray) que vous voulez séparer vos exceptions interceptées/non interceptées. Le schéma de journalisation décrit par Ant est le meilleur, car vous pouvez vous connecter au fichier ou vous connecter à la base de données, ou même vous connecter à la base de données AND et vous n'avez pas besoin de changer votre code à chaque endroit. – DevinB