__init__ method and raising exceptions

Leif K-Brooks eurleif at ecritters.biz
Fri Apr 1 00:07:12 EST 2005


NavyJay wrote:
> I have a simple for-loop, which instantiates a class object each
> iteration.  As part of my class constructor, __init__(), I check for
> valid input settings.  If there is a problem with this iteration, I
> want to abort the loop, but equivalently 'continue' on in the for-loop.
> 
> I can't use 'break' or 'continue' in a class method, nor can I return a
> boolean value from __init__() to check for errors within the for-loop.
> How would I be able to stop the current iteration and continue with the
> next after reporting an error?

You have the right idea in the subject header: raise an exception. 
Something along the lines of this:

class Foo(object):
     def __init__(self, value):
         if value > 10:
             raise ValueError("Value must be under 10, was %s." % value)
         else:
             self.value = value

for value in [1, 4, 10, 7, 15, 13, 6, 3]:
     try:
         obj = Foo(value)
     except ValueError, ex:
         print str(ex)
         continue
     # Do stuff with obj here



More information about the Python-list mailing list