Python: User-Defined Exception That Proves The Rule
- by bandana
Python documentations states: Exceptions should typically be derived from the Exception class, either directly or indirectly.
the word 'typically' leaves me in an ambiguous state.
consider the code:
class good(Exception): pass
class bad(object): pass
Heaven = good()
Hell = bad()
>>> raise Heaven
Traceback (most recent call last):
File "<pyshell#163>", line 1, in <module>
raise Heaven
good
>>> raise Hell
Traceback (most recent call last):
File "<pyshell#171>", line 1, in <module>
raise Hell
TypeError: exceptions must be classes or instances, not bad
so when reading the python docs, should i change 'typically' with ''?
what if i have a class hierarchy that has nothing to do with the Exception class, and i want to 'raise' objects belonging to the hierarchy?
i can always raise an exception with an argument:
raise Exception, Hell
This seems slightly awkward to me
What's so special about the Exception class, that only its family members can be raised?