Skip to content

Commit b201c51

Browse files
committed
Merge pull request #587 from dronekit/tcr-please
Catch and display message and attribute errors, then continue.
2 parents e836c57 + 2235c94 commit b201c51

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

dronekit/__init__.py

+27-4
Original file line numberDiff line numberDiff line change
@@ -629,9 +629,20 @@ def notify_attribute_listeners(self, attr_name, value, cache=False):
629629

630630
# Notify observers.
631631
for fn in self._attribute_listeners.get(attr_name, []):
632-
fn(self, attr_name, value)
632+
try:
633+
fn(self, attr_name, value)
634+
except Exception as e:
635+
errprinter('>>> Exception in attribute handler for %s' %
636+
attr_name)
637+
errprinter('>>> ' + str(e))
638+
633639
for fn in self._attribute_listeners.get('*', []):
634-
fn(self, attr_name, value)
640+
try:
641+
fn(self, attr_name, value)
642+
except Exception as e:
643+
errprinter('>>> Exception in attribute handler for %s' %
644+
attr_name)
645+
errprinter('>>> ' + str(e))
635646

636647
def on_attribute(self, name):
637648
"""
@@ -1464,9 +1475,21 @@ def remove_message_listener(self, name, fn):
14641475

14651476
def notify_message_listeners(self, name, msg):
14661477
for fn in self._message_listeners.get(name, []):
1467-
fn(self, name, msg)
1478+
try:
1479+
fn(self, name, msg)
1480+
except Exception as e:
1481+
errprinter('>>> Exception in message handler for %s' %
1482+
msg.get_type())
1483+
errprinter('>>> ' + str(e))
1484+
14681485
for fn in self._message_listeners.get('*', []):
1469-
fn(self, name, msg)
1486+
try:
1487+
fn(self, name, msg)
1488+
except Exception as e:
1489+
errprinter('>>> Exception in message handler for %s' %
1490+
msg.get_type())
1491+
errprinter('>>> ' + str(e))
1492+
14701493

14711494
def close(self):
14721495
return self._handler.close()

0 commit comments

Comments
 (0)