epy.maybe_reraise

epy.maybe_reraise#

etils.epy.maybe_reraise(
prefix: str | Callable[[], str] | None = None,
suffix: str | Callable[[], str] | None = None,
) Iterator[None][source]

Context manager which reraise exceptions with an additional message.

Benefit: Contrary to raise … from … and raise Exception().with_traceback(tb), this function will:

  • Keep the original exception type, attributes,…

  • Avoid multi-nested During handling of the above exception, another exception occurred. Only the single original stacktrace is displayed.

This result in cleaner and more compact error messages.

Usage:

with epy.maybe_reraise(prefix=f'Error for {x}:'):
  fn(x)
Parameters:
  • prefix – Prefix to add to the exception message. Can be a function for lazy-evaluation.

  • suffix – Suffix to add to the exception message. Can be a function for lazy-evaluation.

Yields:

None