Bonjour,

Voila, tout dabord je débute en python, j ai encore quelques difficultés pour saisir la philosophie de programmation.

Donc, pour le taf, j'ai une classe héritant de asyncore.dispatcher.
Afin de gérer les erreurs correctement, je vois qu il existe une methode
handle_error():, qui selon la doc :
handle_error()
Called when an exception is raised and not otherwise handled. The default version prints a condensed traceback.
J'en conclue que si une error dans la classe est raise sans être catché, la fonction va être appelée.

Pour tester ca, je rajoute donc une exception dans mon send. Sauf que, non, l exception est bien monte, n est pas catché, mais a aucun moment mon handle_error n est appelée.
Voici lecode ce ma classe :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
from asyncore import dispatcher, file_dispatcher
class Muxer(dispatcher):
	def __init__(self, read_from, write_to):
		self.read_from = file_dispatcher(read_from)
		self.write_to = file_dispatcher(write_to)
		self.patch_subdispatchers()
[....]
	def handle_error(self):
		logger = logging.getLogger('mon.logger')
	        logger.error('BOOM')
 
	def recv(self, bufsize):
		return self.read_from.recv(bufsize)
 
	def send(self, data):
                3/0        #<------- creation volontaire de lexception
		return self.write_to.send(data)
Alors est ce que je n ai strictement rien compris au fonctionnement de handle_error, et ca ne marche en fait pas du tout comme ca ? Ou alors j ai juste fait une petite erreur ?