@@ -264,27 +264,32 @@ def handle(self, data, source = None):
264
264
265
265
def dispatch (self , message , source = None ):
266
266
"""Sends decoded OSC data to an appropriate calback"""
267
- try :
268
- if type (message [0 ]) == str :
269
- # got a single message
267
+ if type (message [0 ]) == list :
268
+ # smells like nested messages
269
+ for msg in message :
270
+ self .dispatch (msg , source )
271
+ elif type (message [0 ]) == str :
272
+ # got a single message
273
+ try :
270
274
address = message [0 ]
271
- self .callbacks [address ](message , source )
272
-
273
- elif type (message [0 ]) == list :
274
- # smells like nested messages
275
- for msg in message :
276
- self .dispatch (msg , source )
277
-
278
- except KeyError as e :
279
- # address not found
280
- print ('address %s not found ' % address )
281
- pprint .pprint (message )
282
- except IndexError as e :
283
- print ('got malformed OSC message' )
284
- pass
285
- except None as e :
286
- print ("Exception in" , address , "callback :" , e )
287
-
275
+ callbackfunction = self .callbacks [address ]
276
+ except KeyError as e :
277
+ # address not found
278
+ print ('address %s not found ' % address )
279
+ pprint .pprint (message )
280
+ except IndexError as e :
281
+ print ('got malformed OSC message' )
282
+ else :
283
+ try :
284
+ callbackfunction (message , source )
285
+ except Exception as e :
286
+ import traceback
287
+ print ('OSC callback %s caused an error: %s' % (address , e ))
288
+ traceback .print_exc ()
289
+ print ('---------------------' )
290
+ raise
291
+ else :
292
+ raise ValueError ("OSC message not recognized" , message )
288
293
return
289
294
290
295
def add (self , callback , name ):
0 commit comments