Traitement Des Exceptions


juju0
 Share

Messages recommandés

Salut à tous,

je viens de me mettre au développement python sous XBMC et j'ai des gros problèmes avec les exceptions : je n'arrive pas à obtenir correctement le Traceback

J'ai bien trouvé une fonction qui marche à peu près :

def Excepthook(type, value, tb):	""" 		Intercept all exceptions out of try..except statements and		make the log.txt file with traceback	"""	log = open(HOME_DIR+"log.txt","w")	log.write("Exception report\n\n")	lines=traceback.format_exception(type, value, tb)	log.write("---------------------Traceback lines-----------------------\n")	log.write("".join(lines))	log.write("-----------------------------------------------------------\n\n")	log.write("If you think this is a bug, please send me this file. Thank you.")	log.close()	msgbox("An exception occured. Look at the log.txt file.", title="Problem!")sys.excepthook=Excepthook

Mais cette fonction a deux inconvénients:

- les erreurs levées avant la déclaration ne sont pas traitées

- mais surtout, elle ne marche tout simplement pas avec WindowXML à l'intérieur des méthodes OnAction() et dérivées (OnClick,...) :marteau:

Y'a t-il un moyen fiable de traiter les erreurs sous XBMC ? parce que là je pédale vraiment dans la semoule....

Modifié par juju0
Lien vers le commentaire
Partager sur d'autres sites

Salut

Moi personnellement, je ne m'attachais pas au détection de bug à ce niveau. Je me contentais au mieux, pour les zones délicates de mon code, de faire un try ... except et de remplir un fichier log 'maison'...

Sinon, les commandes print simples et pratiques car elles log dans le log xbmc... Les exceptions, si elles ne sont pas gérées par le try except, sont elles aussi loggées dans le log xbmc. Gros inconvénient néammoins, il faut que l'utilisateur active le log.... (par défaut il ne l'est pas) et autre inconvénient , ca prend du temps pour écrire dans le log (on entend d'ailleur le DD qui gratte)

Sinon, je me demande si y'a pas un module de debug qui existait dans des scripts python pour XBMC... C'est un truc tout fait de python qui log les erreurs. Cherche peut être de ce coté.

Lien vers le commentaire
Partager sur d'autres sites

Salut,

merci de ta réponse. J'ai un peu cherché, et je n'étais même pas au courant pour le debug en appuyant sur le bouton blanc !

Mais pour l'instant, mon XBMCpc avec le script en développement était sur un disque qui vient d'essuyer un crash ! J'essaie de remettre tout ça en place et je reprendrais le développement ensuite.

Merci encore.

Lien vers le commentaire
Partager sur d'autres sites

En creusant un peu plus j'ai fini par trouver une solution :

Les méthodes OnAction() de WindowXML n'ont pas l'air de traiter les erreurs comme il faut mais j'ai trouvé une parade avec le module traceback :

def OnAction(self, action):	try:		# instructions	except:		traceback.print_exc()

Lien vers le commentaire
Partager sur d'autres sites

Voilà, je crois que c'est le module que j'avais en tête.

Tu dois pouvoir faire une classe qui gèrera toutes les exceptions et donc te créer ton propre log. Je n'ai jamais fait mais je sais que ca existe.

Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share