@@ -629,9 +629,20 @@ def notify_attribute_listeners(self, attr_name, value, cache=False):
629
629
630
630
# Notify observers.
631
631
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
+
633
639
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 ))
635
646
636
647
def on_attribute (self , name ):
637
648
"""
@@ -1464,9 +1475,21 @@ def remove_message_listener(self, name, fn):
1464
1475
1465
1476
def notify_message_listeners (self , name , msg ):
1466
1477
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
+
1468
1485
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
+
1470
1493
1471
1494
def close (self ):
1472
1495
return self ._handler .close ()
0 commit comments