On 10/15/2012 12:22 PM, John Gordon wrote:
In <mailman.2217.1350317845.27098.python-l...@python.org> MRAB 
<pyt...@mrabarnett.plus.com> writes:

Why wasn't the message printed out?

You didn't add a __str__ method:

class PvCamError(Exception):
      def __init__(self, msg):
          self.msg = msg
      def __str__(self):
          return self.msg

Wouldn't PvCamError inherit __str__() from Exception?

Exception instances get a .args attibute set to the arguments of the class call and printed in the .__str__ message.

>>> dir(Exception())
['__cause__', '__class__', '__context__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__suppress_context__', '__traceback__', 'args', 'with_traceback']
>>> Exception('abc', 1)
Exception('abc', 1)

So class MyError(Exception) will get that basic default behavior. For fancier printing, one needs a fancier .__str__ method ;-).

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to