Source code for prance.util.exceptions
"""This submodule contains helpers for exception handling."""
__author__ = "Jens Finkhaeuser"
__copyright__ = "Copyright (c) 2018,2019 Jens Finkhaeuser"
__license__ = "MIT"
__all__ = ()
# Raise the given exception class from the caught exception, preserving
# stack trace and message as much as possible.
[docs]def raise_from(klass, from_value, extra_message=None):
try:
if from_value is None:
if extra_message is not None:
raise klass(extra_message)
raise klass()
args = list(from_value.args)
if extra_message is not None:
if len(args) and isinstance(args[0], str):
args[0] += " -- " + extra_message
else:
args.append(extra_message)
raise klass(*args) from from_value
finally:
klass = None