improve error handling
This commit is contained in:
parent
265dbb1a57
commit
95dc8b186e
@ -522,7 +522,9 @@ class Module(HasAccessibles):
|
|||||||
if validate:
|
if validate:
|
||||||
value = pobj.datatype(value)
|
value = pobj.datatype(value)
|
||||||
except Exception as e:
|
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:
|
else:
|
||||||
changed = pobj.value != value or pobj.readerror
|
changed = pobj.value != value or pobj.readerror
|
||||||
# store the value even in case of error
|
# store the value even in case of error
|
||||||
@ -655,10 +657,13 @@ class Module(HasAccessibles):
|
|||||||
self.pollInfo.pending_errors.discard(rfunc.__name__)
|
self.pollInfo.pending_errors.discard(rfunc.__name__)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if getattr(e, 'report_error', True):
|
if getattr(e, 'report_error', True):
|
||||||
|
self.log.debug('error in %r', rfunc)
|
||||||
name = rfunc.__name__
|
name = rfunc.__name__
|
||||||
self.pollInfo.pending_errors.add(name) # trigger o.k. message after error is resolved
|
self.pollInfo.pending_errors.add(name) # trigger o.k. message after error is resolved
|
||||||
if isinstance(e, SECoPError):
|
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:
|
if e.silent:
|
||||||
self.log.debug('%s', e.format(False))
|
self.log.debug('%s', e.format(False))
|
||||||
else:
|
else:
|
||||||
@ -666,7 +671,7 @@ class Module(HasAccessibles):
|
|||||||
if raise_com_failed and isinstance(e, CommunicationFailedError):
|
if raise_com_failed and isinstance(e, CommunicationFailedError):
|
||||||
raise
|
raise
|
||||||
else:
|
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
|
# we want to log the traceback
|
||||||
self.log.error('%s', formatException())
|
self.log.error('%s', formatException())
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user