On Thu, Sep 24, 2020 at 10:47:21AM +0200, Sergio Fenoll wrote:
> Hi,
>
> I was wondering if the following idea would be a useful addition to the
> Python language and if it could use a new PEP.
> I personally find myself often looking into the documentation &
> implementation of libraries I use to try and figure out what exceptions
> a function may raise.
I think that it's a truism that any function written in Python could
raise any exception :-)
In practice, though, I think it is reasonable to say that functions will
*typically* but not necessarily exclusively raise a certain set of
exceptions.
What you seem to be describing is similar to Java's "Checked
Exceptions", which are widely agreed to be an failure. Can you explain
why this would be more successful?
The last thing I want to see is people being encouraged to write code
like this:
def demo(arg)->Something:
# Raises ValueError
try:
processing...
except ValueError:
raise
except:
# Any other unexpected error.
raise ValueError('something unexpected')
just to ensure that the declared exception is correct.
> In the same vein as adding type annotations to code, I think it'd be
> very useful to have exception "raises" annotations, i.e. a way to
> annotate what exceptions a function raises. Again, like type
> annotations, it shouldn't be mandatory nor actually be enforced at
> runtime. It would purely serve as a feature that IDEs can make use of.
How would an IDE make use of this?
> An example of how it may look:
>
> def divide(numerator: float, denominator: float) raises [ZeroDivisionError]
> -> float:
> return numerator / denominator
If either argument is a subclass of float, this could raise any
exception.
--
Steve
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/WKANCUIL2XTQXYRWP7SVINWB5ANT2ZOR/
Code of Conduct: http://python.org/psf/codeofconduct/