[Python-ideas] Arguments to exceptions
jeff.walker00 at yandex.com
Sun Jul 16 19:17:39 EDT 2017
15.07.2017, 18:33, "Chris Angelico" <rosuav at gmail.com>:
> On Sun, Jul 16, 2017 at 10:12 AM, Jeff Walker <jeff.walker00 at yandex.com> wrote:
>> The first problem is that there is no direct access to the components that make up the error in some of the standard Python exceptions.
>> >>> foo
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> NameError: name 'foo' is not defined
>> If you need access to the name, you must de-construct the error message. To get direct access to the name, it would need to be passed to the exception when raised. Why wasn't that done?
> Because it normally isn't needed. Can you give an example of where
> NameError could legitimately be raised from multiple causes?
For me it generally occurs when users are using Python to hold their actual data. Python can be used as a data format in much the same way JSON or Yaml. And if the end user is familiar with Python, it provides many nice benefits over the alternatives. I tend to use it in this fashion a great deal, particularly for configuration information. In these case, it would be nice to be able access the 'participants' in the following exceptions:
NameError (offending name)
KeyError (collection, offending key)
IndexError (collection, offending index)
More information about the Python-ideas