improve error handling

This commit is contained in:
l_samenv 2025-03-06 17:22:21 +01:00
parent 265dbb1a57
commit 95dc8b186e

View File

@ -522,7 +522,9 @@ class Module(HasAccessibles):
if validate:
value = pobj.datatype(value)
except Exception as e:
err = e
# allow to assign an exception to trigger an error_update message
err = value if isinstance(value, Exception) else e
changed = False
else:
changed = pobj.value != value or pobj.readerror
# store the value even in case of error
@ -655,10 +657,13 @@ class Module(HasAccessibles):
self.pollInfo.pending_errors.discard(rfunc.__name__)
except Exception as e:
if getattr(e, 'report_error', True):
self.log.debug('error in %r', rfunc)
name = rfunc.__name__
self.pollInfo.pending_errors.add(name) # trigger o.k. message after error is resolved
if isinstance(e, SECoPError):
e.raising_methods.append(name)
if name == 'doPoll':
# otherwise the method is already appended in rfunc
e.raising_methods.append(f'{self.name}.{name}')
if e.silent:
self.log.debug('%s', e.format(False))
else:
@ -666,7 +671,7 @@ class Module(HasAccessibles):
if raise_com_failed and isinstance(e, CommunicationFailedError):
raise
else:
# not a SECoPError: this is proabably a programming error
# not a SECoPError: this is probably a programming error
# we want to log the traceback
self.log.error('%s', formatException())