defining, raising and catching exceptions

Benjamin Kaplan benjamin.kaplan at case.edu
Thu Aug 5 18:49:38 EDT 2010


What makes you think it has to do with user-defined exceptions?

>>> try :
...    raise Exception("hello")
... except Exception as (errno, errText) :
...   print "whatever"
...
Traceback (most recent call last):
ValueError: need more than 1 values to unpack

An Exception is an object, not a tuple of number and text.

Raise an instance of the exception, not the class:

raise NetActiveError("net already running")

And then catch the exception object

except NetActiveError as err:
   print err.args

On Thu, Aug 5, 2010 at 3:41 PM, Chris Hare <chare at labr.net> wrote:
>
> I have a block of test code, where I am trying to raise and catch my own user defined exception
>
> class NetActiveError(RuntimeError):
>    def __init__(self,error):
>        self.args = error
>
> def a():
>    try:
>        fh = open("me.txt", "r")
>    except Exception as (errno, errText):
>        print errText
>    try:
>        b()
>    except NetActiveError as (errono, errText):
>        print errno, errText
>
> def b():
>    print "def b"
>    raise NetActiveError,"net already running"
>
>
> a()
>
>
> When I run it though, I get the following error:
>
> chare$ python z
> No such file or directory
> def b
> Traceback (most recent call last):
>  File "z", line 20, in <module>
>    a()
>  File "z", line 12, in a
>    except NetActiveError as (errono, errText):
> ValueError: too many values to unpack
>
>
> What am I doing wrong here?
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list