#30516 closed Bug (fixed)
Autoreloader crashes on re-raising exceptions with custom signature.
| Reported by: | Alan Trick | Owned by: | Tom Forbes | 
|---|---|---|---|
| Component: | Utilities | Version: | 2.2 | 
| Severity: | Release blocker | Keywords: | autoreload | 
| Cc: | Tom Forbes | Triage Stage: | Accepted | 
| Has patch: | yes | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | no | 
Description (last modified by )
How to reproduce:
In apps.py, put the following code, and update init.py or the settings to have this app config be used.
from django.apps import AppConfig
class MyException(Exception):
    def __init__(self, value: str, other_thing: str):
        super().__init__(value)
        self.ot = other_thing
class Config(AppConfig):
    name = "myapp"
    verbose_name = "My App"
    def ready(self):
        raise MyException("foo", "bar")
The problem is that django.utils.autoreload.raise_last_exception tries to construct a new exception of the same type, with 1 argument (the original exception). The consequence is that you just get a TypeError exception about  __init__() missing 1 required positional argument: 'other_thing' and it completely masks the original exception.
Note that this behavior was changed in c8720e7696ca41f3262d5369365cc1bd72a216ca, it used to just re-raise the exception value. I don't know why it was changed.
I noticed this issue as a result of https://gitlab.com/alantrick/django-vox/issues/9
Attachments (1)
Change History (6)
comment:1 by , 6 years ago
| Description: | modified (diff) | 
|---|
comment:2 by , 6 years ago
| Cc: | added | 
|---|---|
| Component: | Uncategorized → Utilities | 
| Keywords: | autoreload added | 
| Severity: | Normal → Release blocker | 
| Summary: | raise_last_exception doesn't work with exception types with different __init__ signatures → Autoreloader crashes on re-raising exceptions with custom signature. | 
| Triage Stage: | Unreviewed → Accepted | 
| Type: | Uncategorized → Bug | 
comment:3 by , 6 years ago
| Has patch: | set | 
|---|---|
| Owner: | changed from to | 
| Status: | new → assigned | 
Thanks for the report.
Regression in c8720e7696ca41f3262d5369365cc1bd72a216ca.
Reproduced at df46b329e0900e9e4dc1d60816c1dce6dfc1094e.