#9146 closed (invalid)
handlers/base.py relies on cpython-specific behavior
Reported by: | Maciej Fijalkowski | Owned by: | jacobkm |
---|---|---|---|
Component: | Core (Other) | Version: | 1.0 |
Severity: | Keywords: | pypy obscure | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Example of code:
import sys try: raise 1/0 except: try: stuff finally: print sys.exc_info()
I think it should print NameError inside print. CPython behaves differently. Anyway, it's very confusing. The same logic is in
handlers/base.py
around line 118, which indirectly calls sys.exc_info.
Change History (6)
comment:1 by , 16 years ago
milestone: | → 1.1 |
---|---|
Summary: | relying on cpython's bug → handlers/base.py relies on cpython-specific behavior |
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 16 years ago
Component: | Uncategorized → Core framework |
---|
comment:3 by , 16 years ago
comment:4 by , 16 years ago
I had a rummage through all the "finally" handlers in the request processing code last week and I couldn't find anything that called exc_info()
. Thought I'd noted that here, but apparently I was distracted by a seagull before I got around to it. In any case, I'm in the same position as Jacob: need more info.
comment:5 by , 16 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
I think it should print NameError? inside print.
No, it shouldn't. This is officially documented in the Python Language Reference: http://docs.python.org/reference/compound_stmts.html#try:
"The exception information is not available to the program during execution of the finally clause."
The same logic is in handlers/base.py
Could not find similar logic in that file. Please reopen if you can provide more information
There really isn't enough information here for me to figure out what to change. There's some pretty deeply nested exception handling there in the base handler, and I don't know which one's wrong, or what the wrong behavior looks like, or how to trigger it. Without more info -- and preferably a patch -- I don't know that I can intuit enough about this problem to fix it.