Skip to content

Commit 8ef99f5

Browse files
committed
Merge pull request kivy#2314 from dirkjot/master
Changed error check on dispatch, so that errors in the callback code wil...
2 parents 9af1777 + 318184e commit 8ef99f5

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

kivy/lib/osc/OSC.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -264,27 +264,32 @@ def handle(self, data, source = None):
264264

265265
def dispatch(self, message, source = None):
266266
"""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:
270274
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)
288293
return
289294

290295
def add(self, callback, name):

0 commit comments

Comments
 (0)