我发现自己经常想像这样构建我的异常类:
# legends.py
class Error(Exception): pass
class Rick(object):
class Error(Error): pass
class GaveYouUp(Error): pass
class LetYouDown(Error): pass
class Michael(object):
class Error(Error): pass
class BlamedItOnTheSunshine(Error): pass
class BlamedItOnTheMoonlight(Error): pass
我只在 Django ( DoesNotExist
) 中看到过这种模式,它非常有意义。有什么我遗漏的吗,为什么大多数人似乎都喜欢顶级例外?
编辑 我会将这些类用于通用粒度,例如:
import legends
try:
do_stuff()
except legends.Michael.Error:
blame_it_on_the_boogie()
except legends.Rick.GaveYouUp:
let_you_down()
except legends.Error:
pass
except Exception as e:
raise Hell()