[issue37891] Exceptions tutorial page does not mention raise from
New submission from Niels Albers <nralbers@gmail.com>: raise <Exception> from <exception instance> has been in the language since python 3, yet the tutorial page teaching about exceptions does not mention it. (see https://docs.python.org/3.7/tutorial/errors.html#raising-exceptions) It would be especially helpful to language newcomers to touch on the possibility of passing error context when raising a new exception in an exception handler. ---------- assignee: docs@python components: Documentation messages: 349994 nosy: Niels Albers, docs@python priority: normal severity: normal status: open title: Exceptions tutorial page does not mention raise from versions: Python 3.5, Python 3.6, Python 3.7, Python 3.8, Python 3.9 _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue37891> _______________________________________
Change by Niels Albers <nralbers@gmail.com>: ---------- type: -> enhancement _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue37891> _______________________________________
Raymond Hettinger <raymond.hettinger@gmail.com> added the comment: Thanks for spotting this omission. Would you like to submit a PR with a short paragraph on exception chaining and "raise from"? ---------- nosy: +rhettinger _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue37891> _______________________________________
Srinivas Nyayapati <shireenrao@gmail.com> added the comment: In case Niels Albers is not interested, can I submit a PR? I noticed the linked raise reference documentation from the tutorial having details on exception chaining (https://docs.python.org/3.7/reference/simple_stmts.html#raise). Does it make sense to mention exception chaining in the tutorial and say "read details in the reference docs"? Or as you mentioned.. just write a short paragraph on exception chaining and give an example in the tutorial? ---------- nosy: +shireenrao _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue37891> _______________________________________
Raymond Hettinger <raymond.hettinger@gmail.com> added the comment: Please give Niel a chance to submit wording, even a post here on the tracker will be fine. We usually defer to the person who actually encountered the issue. If after a week or so, there is no response, you can pick this up. Try to be minimal with it and avoid the temptation to go gonzo. The "from" part of exception semantics is one of its most minor and easily ignored features. Accordingly, it should get minimal space in the tutorial and probably doesn't even warrant an example if a simple, clear sentence will suffice. ---------- _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue37891> _______________________________________
Srinivas Nyayapati <shireenrao@gmail.com> added the comment: Here is my first pass at this. I propose the following sentence be added at the end section 8.4: If you need to track related exceptions (exceptions during exception handling), you should use exception chaining. You can chain exceptions by using the ``from`` clause. Just raise a new exception class or instance from an existing exception. The existing exception will be set as the cause for the new exception. ---------- _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue37891> _______________________________________
Niels Albers <nralbers@gmail.com> added the comment: Thanks Srinivas for the suggestion. IMO exception chaining has more utility than only dealing with new exceptions that are caused by exception handling. It's all about preserving exception context. As both a writer of libraries and a user of such, I do like to have a full context chain when I have to handle an exception (or more importantly as a devops engineeer: log it) Is this edit acceptable? "If you need to track exception context, you can use exception chaining. You can chain exceptions by using the ``from`` clause. Just raise a new exception class or instance from an existing exception. The existing exception will be set as the cause for the new exception." ---------- _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue37891> _______________________________________
Change by Irit Katriel <iritkatriel@yahoo.com>: ---------- keywords: +easy versions: +Python 3.10 -Python 3.5, Python 3.6, Python 3.7, Python 3.8, Python 3.9 _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue37891> _______________________________________
participants (4)
-
Irit Katriel
-
Niels Albers
-
Raymond Hettinger
-
Srinivas Nyayapati