Alex Pavluck wrote: > Hello. On page 124 of "Thinking like a Computer Scientist". There is > an exercise to take the following code and with the use of TRY: / > EXCEPT: handle the error. Can somone help me out? Here is the code: > > def inputNumber(n): > if n == 17: > raise 'BadNumberError: ', '17 is off limits.' > else: > print n, 'is a nice number' > return n > > inputNumber(17)
Yikes! It's a very bad idea to use string literals as exceptions. Use one of the classes from the 'exceptions' module, or derive your own from one of them. E.g.: class BadNum(ValueError): pass def inputNumber(n): if n == 17: raise BadNum('17 is off limits') else: print n, 'is a nice number' try: inputNumber(17) except BadNum, x: print 'Uh Oh!', x Uh Oh! 17 is off limits See: http://docs.python.org/ref/try.html#try especially the following bit: ...the clause matches the exception if the resulting object is ``compatible'' with the exception. An object is compatible with an exception if it is either the object that identifies the exception, or (for exceptions that are classes) it is a base class of the exception,... Note that the object identities must match, i.e. it must be the same object, not just an object with the same value. Identity of string literals is a *very* slippery thing. Don't depend on it. Anyway, python 2.5 gives a deprecation warning if a string literal is used as an exception. -- http://mail.python.org/mailman/listinfo/python-list