You've overriden the base class Exception __init__ method and haven't
replaced it's behaviour properly. The Exception classes store the message
string in a .msg attribute (or .message, i don't remember exactly). You also
didn't implement the __repr__ method, which most likely relies on that
attribute. Try this:


class SelectionError(Exception):
    def __init__(self, value):
        Exception.__init__(self, value)

raise SelectionError('You selected too many objects')


- Ofer
www.mrbroken.com


On Fri, Mar 25, 2011 at 10:42 AM, Adam Mechtley <[email protected]>wrote:

> Thanks, Jesse! Not to beat a dead horse here, but for the sake of
> posterity:
>
> Without stack trace enabled, Maya 2011+ won't print a custom exception
> message for a derived class, but *WILL* print it if you just call the base
> class. For example:
>
>  class SelectionError(Exception):
>
>  def __init__(self, value):
>
>   self.value = value
>
>  def __str__(self):
>
>   return self.value
>
>  try: raise SelectionError('You selected too many objects')
>
> except: raise
>
>
> will print
>
>
>  # Error: SelectionError: file <maya console> line 1: #
>
>
> However, just doing this
>
>
>  try: raise Exception('You selected too many objects')
>
> except: raise
>
>
> will print this
>
> # Error: Exception: file <maya console> line 1: You selected too many
> objects #
>
>
> On Thu, Mar 24, 2011 at 7:55 PM, Jesse Kretschmer <[email protected]>wrote:
>
>>
>>> IDLE will print:
>>>
>>>
>>> Traceback (most recent call last): File "<pyshell#5>", line 2, in
>>> <module> raise SelectionError('You selected too many objects')
>>> SelectionError: You selected too many objects
>>>
>>>
>>> But Maya will print:
>>>
>>>
>>>  # Error: SelectionError: file <maya console> line 2: #
>>>
>>>
>>> *Am I missing something really basic here, or can Maya seriously not
>>> print custom exception messages to the console?*
>>>
>>
>>
>> Are you running Maya 2011?  If so make sure that *Show Stack Trace* is
>> enabled in the *Script Editor*.  It is under the *History *menu.
>>
>> Also you could try printing the error the maya way:
>> import maya.OpenMaya
>> OpenMaya.MGlobal.displayError("String")
>>
>> good luck.
>>
>
> --
> http://groups.google.com/group/python_inside_maya
>

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to