[Python-ideas] Arguments to exceptions

Terry Reedy tjreedy at udel.edu
Tue Jul 4 23:13:43 EDT 2017


On 7/4/2017 5:48 PM, David Mertz wrote:
> If a method, why not a property?

Since the time to respond in human terms is trivial, I can imagine that 
this might be accepted.  I just did not think of that option.

> On Jul 4, 2017 2:41 PM, "Terry Reedy" 
> <tjreedy at udel.edu 
> <mailto:tjreedy at udel.edu>> wrote:
> 
>     On 7/4/2017 3:32 PM, David Mertz wrote:
> 
>         I don't see the usefulness rich exception data as at all as
>         limited as this. Here's some toy code that shows a use:
> 
> 
>         ----
> 
>         # For some reason, imports might not be ready immediately
>         # Maybe flaky network drive, maybe need to install modules, etc
>         # The overall program can do things too make them available
>         lazy_import("foo", "bar", "baz", "blat")
> 
>         while True:
>               try:
>                   x = foo(1) * bar(2) + baz(3)**blat(4)
>                   break
>               except NameError as err:
>                   lazy_import(err.name <http://err.name> <http://err.name>)
>                   sleep(1)
> 
> 
>     Alternate proposal: give the NameError class a .name instance method
>     that extracts the name from the message.  This should not increase
>     the time to create an instance.  You would then write 'err.name
>     <http://err.name>()' instead of 'err.name <http://err.name>'. For 3.6
> 
>     def name(self):
>          msg = self.args[0]
>          return msg[6:msg.rindex("'")]
> 
>     # current test
> 
>     try: xyz
>     except NameError as e:
>          print(name(e) == 'xyz')
> 
>     # Exceptions unittest to ensure that the method
>     # stays synchronized with future versions of instances
> 
>     def test_nameerror_name(self):
>          try:
>              xyz
>          except NameError as e:
>              self.assertEqual(e.name <http://e.name>(), 'xyz')
> 
>     Generalize to other exceptions.
> 
>     Further only-partially baked idea: Since exceptions are (in cpython)
>     coded in C, I wonder if C data could be inexpensively attached to
>     the instance to be retrieved and converted to python objects by
>     methods when needed.
> 
>     -- 
>     Terry Jan Reedy
> 
>     _______________________________________________
>     Python-ideas mailing list
>     Python-ideas at python.org
>     <mailto:Python-ideas at python.org>
>     https://mail.python.org/mailman/listinfo/python-ideas
>     <https://mail.python.org/mailman/listinfo/python-ideas>
>     Code of Conduct: http://python.org/psf/codeofconduct/
>     <http://python.org/psf/codeofconduct/>
> 
> 
> 
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
> 


-- 
Terry Jan Reedy



More information about the Python-ideas mailing list