Thanks for all the helps. I'm not habitual for this usage of 'else',other languages seem don't support this syntax. i.g,writting the codes below by Perl would get an error:
# perl -le 'for $i (1..10){print $i} else{print "finished"}' syntax error at -e line 1, near "}else" Execution of -e aborted due to compilation errors. 2007/1/19, Diez B. Roggisch <[EMAIL PROTECTED]>: > 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? > > except <ExceptionSpec>, <variable>: > > will catch an exception of the kind specified in <ExceptionSpec> (it might > actually be more than one), and store the exception object in the variable > named <variable> > > > 2) The 'if' and 'else' are not in the same indent scope,why this can work? > > > Because additionally to if, also for and try have else-clauses. The latter > two are only being called if the body of the control structure hasn't been > left due to "unnatural" circumstances. See this: > > > > > for i in xrange(10): > pass > else: > print "test 1" > > for i in xrange(10): > break > else: > print "test 2" > > try: > pass > except: > pass > else: > print "test 3" > > try: > raise "I know I shouldn't rais strings..." > except: > pass > else: > print "test 4" > > > > It will only print > > test 1 > test 3 > > > Diez > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list