
I saw this link while browsing movie times on Fandango, and, even though I clearly read "add to my theaters", it took all my mental strength to not click that plus button. The design of that tiny little icon simply screamed "there's more info here!"
if code == 'E00039':
raise Duplicate()
elif code == 'E00045':
raise NSError()
# etc
else:
raise CIMError()
exc = {
'E00039': Duplicate,
'E00045': NSError,
# etc
}
if code in exc:
raise exc[code]()
else:
raise CIMError()
class CIMError(Exception):
def __new__(cls, code, text, *args, **kwargs):
# If the code matches a specialized Exception, use that instead
for subclass in cls.__subclasses__():
if subclass.code == code:
cls = subclass
break
return super(CIMError, cls).__new__(cls, code, text, *args, **kwargs)
def __init__(self, code, text, *args, **kwargs):
self.code = code
self.text = text
super(CIMError, self).__init__(code, text, *args, **kwargs)
def __str__(self):
return '%s: %s %s' % (self.__class__.__name__, self.code, self.text)
class Duplicate(CIMError):
code = 'E00039'
class NSError(CIMError):
code = 'E00045'
>>> CIMError('E00011', '')
CIMError('E00011', '')
>>> CIMError('E00039', '')
Duplicate('E00039', '')
>>> CIMError('E00045', '')
NSError('E00045', '')
raise CIMError(code, detail)