def append_description_to_exception(exp=None, description=None):
    """
    Adds additional description to Exception. As result original Exception can be reraised with additional information
    http://stackoverflow.com/questions/9157210/how-do-i-raise-the-same-exception-with-a-custom-message-in-python

    :param exp: Exception
    :param description: Description to add as String
    :return: Exception
    """
    if exp is None:
        raise AttributeError("Provide exp as parameter")
    if description is None:
        raise AttributeError("Provide description as parameter")

    if not exp.args:
        exp.args = ('',)

    try:
        description = str(description)
    except Exception:
        try:
            description = repr(description)
        except Exception:
            description = 'Description could not be converted to string'

    exp.args = exp.args + (description,)
    return exp