Jm lists wrote: > Please help with this script: > > class ShortInputException(Exception): > '''A user-defined exception class.''' > def __init__(self,length,atleast): > Exception.__init__(self) > self.length=length > self.atleast=atleast > > try: > s=raw_input('Enter something --> ') > if len(s)<3: > raise ShortInputException(len(s),3) > # Other work can continue as usual here > except EOFError: > print '\nWhy did you do an EOF on me?' > except ShortInputException,x: > print 'ShortInputException: The input was of length %d, was > expecting at least %d' %(x.length,x.atleast) > else: > print 'No exception was raised.' > > > My questions are: > > 1) ShortInputException,x: what's the 'x'? where is it coming?
It's the actual ShortInputException instance that was raised. Try printing x.length and x.atleast, for example. > 2) The 'if' and 'else' are not in the same indent scope,why this can work? This else: clause goes with the try: and except: clauses, not the if: clause. It is executed if no exception was raised. http://docs.python.org/ref/try.html -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list