On Tue, Oct 13, 2020 at 12:47:45PM -0400, David Mertz wrote: > On Tue, Oct 13, 2020 at 6:18 AM Steven D'Aprano <st...@pearwood.info> wrote: > > > I don't think that a two line class (perhaps a couple of extra > > lines if you give it a docstring) justifies the name "boilerplate": > > > > class MySpecialException(Exception): > > pass > > > > I think that in 22 years of using Python, I have never written an exception > that took more than these two lines of code.
I have, once or twice in a blue moon, written more complex exceptions, but few of them survived long enough to make it into actual working code. > Heck, I even have my memory jogged of string exceptions reading this. When > did those go away fully, 1.5.2? 2.1? String exceptions hung around a lot longer than people think, they were first deprecated in 2.5 and not removed for good until 2.6. $ python2.5 -c "raise 'spam and eggs'" -c:1: DeprecationWarning: raising a string exception is deprecated Traceback (most recent call last): File "<string>", line 1, in <module> spam and eggs > I DID in the discussion, immediately think of making an exception a > dataclass, as someone else replied with. I guess if you want cargo in your > exception, that's a pretty good way to do it. "Cargo", that's an excellent term, thank you. > But really the ONLY thing I > ever want in an exception is an inheritance tree. An exception feels like > a really unnatural way to pass around data Indeed. Very few exceptions in the std lib are used that way, which hints that it may not be a great idiom, or at least not a great cultural fit. As Wes pointed out, catching exceptions is relatively slow, and using exceptions for flow control makes them a glorified GOTO with all the risks that entails. Or even COMEFROM. Urggh. I don't entirely agree with this article: http://www.lighterra.com/papers/exceptionsharmful/ but the points it makes are important. See also: https://stackoverflow.com/questions/1736146/why-is-exception-handling-bad https://softwareengineering.stackexchange.com/questions/189222/are-exceptions-as-control-flow-considered-a-serious-antipattern-if-so-why So I'm cautious about using exceptions for complex flow control. (Iteration and StopIteration is a very simple example of flow control.) -- Steve _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/MM7V6ELTE6AF63HKKL2L7DW2O4GMVQG7/ Code of Conduct: http://python.org/psf/codeofconduct/