On Fri, Jun 4, 2010 at 3:10 AM, Payal <payal-pyt...@scriptkitchen.com> wrote: > Hi all, > In http://docs.python.org/tutorial/errors.html#handling-exceptions it > says, > > | >>> try: > | ... raise Exception('spam', 'eggs') > > Why would I want to use a class for exception? I could simply use raise > w/o it?
`raise Foo, "whatever"` and `raise Foo("whatever")` do the same thing; the former is deprecated though as it's been removed from Python 3.x > Also the help() says, > class Exception(BaseException) That's *not* a constructor method signature. It's a class declaration saying Exception is a subclass of the class BaseException. > But we have used 'spam' and 'eggs'. Why? > > | ... except Exception as inst: > > Now what does "as inst" do here? (Is it making an instance, but how? > Aren't instances made with this, inst = Klass() ?) It's as I explained it before. Another example: >>> class FooError(BaseException): ... def __init__(self, x): ... self.x = x ... >>> try: ... raise FooError(42) ... except FooError as e: ... print "x =", e.x ... x = 42 The "e" from the "as" is the FooError exception that was raise-d. I would suggest addressing further questions to the newbie-specific Python mailinglist, python-tutor: http://mail.python.org/mailman/listinfo/tutor Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list