[issue4686] Exceptions in ConfigParser don't set .args

David M. Beazley report at bugs.python.org
Wed Dec 17 21:22:42 CET 2008

New submission from David M. Beazley <beazley at users.sourceforge.net>:

The ConfigParser module defines a variety of custom exceptions, many of 
which take more than one argument (e.g., InterpolationError, 
NoOptionError, etc.).   However, none of these exceptions properly set 
the .args attribute.   For example, shouldn't NoOptionError be defined 
as follows:

class NoOptionError(Error):
    def __init__(self,option,section):
        Error.__init__(self,"No option %r in section: %r" %
        self.option = option
        self.section = section
        self.args = (option,section)      #!! Added this line

This is kind of a minor point, but the missing args means that these 
exceptions don't work properly with programs that need to do fancy kinds 
of exception processing (i.e., catching errors and reraising them in a 
different context or process).

I can't speak for Python 3.0, but it's my understanding that .args 
should always be set to the exception arguments.

Don't ask how I came across this---it was the source of a really bizarre 
bug in something I was playing around with.

components: Library (Lib)
messages: 77983
nosy: beazley
severity: normal
status: open
title: Exceptions in ConfigParser don't set .args
type: behavior
versions: Python 2.1.1, Python 2.1.2, Python 2.2, Python 2.2.1, Python 2.2.2, Python 2.2.3, Python 2.3, Python 2.4, Python 2.5, Python 2.5.3, Python 2.6, Python 2.7, Python 3.0, Python 3.1

Python tracker <report at bugs.python.org>

More information about the Python-bugs-list mailing list