Since IndexError and KeyError are conceptually like ValueError but in
a more narrowly defined context, I think IndexError and KeyError
actually make sense here (even though they don't inherit from
ValueError).

--Guido

On 9/3/07, Eric Smith <[EMAIL PROTECTED]> wrote:
> Ron Adam points out some differences in which exceptions are thrown by
> str.format and string.Formatter.  For example, on a missing positional
> argument:
>
>  >>> "{0}".format()
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> ValueError: Not enough positional arguments in format string
>
>  >>> Formatter().format("{0}")
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
>    File "/shared/src/python/py3k/Lib/string.py", line 201, in format
>      return self.vformat(format_string, args, kwargs)
>    File "/shared/src/python/py3k/Lib/string.py", line 220, in vformat
>      obj, arg_used = self.get_field(field_name, args, kwargs)
>    File "/shared/src/python/py3k/Lib/string.py", line 278, in get_field
>      obj = self.get_value(first, args, kwargs)
>    File "/shared/src/python/py3k/Lib/string.py", line 235, in get_value
>      return args[key]
> IndexError: tuple index out of range
>
> The PEP says: In general, exceptions generated by the formatter code
> itself are of the "ValueError" variety -- there is an error in the
> actual "value" of the format string.
>
> I can easily change string.Formatter to make this a ValueError, and I
> think that's probably the right thing to do.  For example, if the string
> comes from a translation module, then there might be an extra parameter
> added by mistake, in which case ValueError seems right to me.
>
> But I'd like to hear if anyone else thinks this should be an IndexError,
> or maybe they both should be some other exception.
>
> Similarly "{x}".format()' currently raises ValueError, but
> 'Formatter().format("{x}")' raises KeyError.
> _______________________________________________
> Python-3000 mailing list
> Python-3000@python.org
> http://mail.python.org/mailman/listinfo/python-3000
> Unsubscribe: 
> http://mail.python.org/mailman/options/python-3000/guido%40python.org
>


-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to