Commit 687afdaa authored by Marc Tamlyn's avatar Marc Tamlyn
Browse files

Merge pull request #1241 from jaylett/master

Explicit exception chaining for db exceptions by setting __cause__ in py2
parents 4f4e9243 54485557
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -91,7 +91,6 @@ class DatabaseErrorWrapper(object):
                except AttributeError:
                    args = (exc_value,)
                dj_exc_value = dj_exc_type(*args)
                if six.PY3:
                dj_exc_value.__cause__ = exc_value
                # Only set the 'errors_occurred' flag for errors that may make
                # the connection unusable.
+7 −1
Original line number Diff line number Diff line
@@ -152,10 +152,16 @@ The Django wrappers for database exceptions behave exactly the same as
the underlying database exceptions. See :pep:`249`, the Python Database API
Specification v2.0, for further information.

As per :pep:`3134`, a ``__cause__`` attribute is set with the original
(underlying) database exception, allowing access to any additional
information provided. (Note that this attribute is available under
both Python 2 and Python 3, although :pep:`3134` normally only applies
to Python 3.)

.. versionchanged:: 1.6

    Previous version of Django only wrapped ``DatabaseError`` and
    ``IntegrityError``.
    ``IntegrityError``, and did not provide ``__cause__``.

.. exception:: models.ProtectedError