On 09/07/13 05:47, Dave Angel wrote:
On 07/08/2013 01:57 PM, Jim Mooney wrote:
On 8 July 2013 00:12, Steven D'Apranocatching ArithmeticError

further on), please use a custom exception


Well, an Arithmetic Error was better than bubbling up to a totally general
one. I'm not sure how do custom error code. Short example, please ;')

Jim


I think a ValueError might be best.
[...]
class TooHugeError (ValueError):
    pass

I would normally agree, but in Jim's code the exception is purely being used 
for internal flow control, it is not being exposed to the caller. So I wouldn't 
inherit from ValueError, I'd keep this a completely independent exception. I 
wouldn't even call it an Error, since it's actually a limitation of Jim's code, 
not an actual error.

Also, since Jim's code already catches ValueError, he would need ensure that he 
catches this *first*, otherwise it will be caught by the ValueError handler:

try:
    raise TooHugeError
except TooHugeError:  # this must come first
    ...
except ValueError:  # otherwise this will catch it
    ...


Whereas if you keep the custom exception independent, the order of except 
clauses doesn't matter.


class TooHuge(Exception):
    pass


try:
    raise TooHuge
except ValueError:
    print("bad value")
except TooHuge:
    print("caught it")




--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to