audited(func, log) that calls the zero-argument func() and returns its result; if it raises, append the string type(err).__name__ to the log list and re-raise the same exception with a bare raise (preserving the original traceback — not raise err).audited(lambda: 1 / 0, log)
ZeroDivisionError propagates; log == ['ZeroDivisionError']
The error is recorded but not altered.
except Exception as err: log.append(...); raise.
Bare raise keeps the original traceback intact.