On Fri, Sep 25, 2020 at 01:23:01PM +0900, Stephen J. Turnbull wrote:
> Sergio Fenoll writes:
> 
>  > 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.
> 
> I think you need to explain the use cases in more detail.  You mention
> IDEs, but they can already grovel through the source code and work out
> exactly what exceptions each function explicitly raises, and keep a
> database for builtins and the stdlib, which could easily be updated by
> the user by running the groveler on Python itself.  3rd party imports,
> ditto.  This would allow far more accurate inference of possible
> exceptions than an optional 'raises' annotation would.
pyntch (currently ready for Python 2) can already tell us about exceptions.

Do you know about other tools?

A tiny example:

l=[0,1,2]
with open('f') as fh:
    a = int(fh.read())
    print(1 / l[a])

command (after fixing option hangling in tchecker.py):
tchecker.py -C show_all_exceptions=True -C raise_uncertain=True p.py

output:
loading: 'p.py' as 'p'
processing: 322 161
processing: 324 6
processing: 328 8
processing: 328 4
processing: 329 2
processing: 332 2
processing: 332 1
processing: 333 2
processing: 333 2
total files=1, lines=4 in 0.05sec
[p (p.py)]
  a = <int>
  fh = <file>
  l = [<int>]
  raises IOError: cannot open a file at p:2
  raises EOFError: end of file at p:3
  raises IndexError: index out of range at p:4

ZeroDivisionError is missing there, however, it couldbe seen as a space for
improvement.

David Kolovratník
_______________________________________________
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/GZW7NXKJMUTK54KTGBCAXMFVIWDKTTFN/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to