python提供了一个异常类,来处理代码中可能出现的异常
class BaseException BaseException是所有内建异常都继承于这个类。但用户自定义的异常类用不继承这个类,而是继承自Exception。 class Exception Exception traceback 当异常发生时python会自动创建traceback对象,并关联到traceback属性中,你可以使用with_traceback()创建异常和设置你自己的traceback。(Python3) raise python2到python3
raise E, V 改为raise E(V),raise E, V, T 改为raise E(V).with_traceback(T)
兼容python2和python3的写法
peewee
PY3:
def reraise(tp, value, tb=None):#type,value,traceback
if value.__traceback__ is not tb:
raise value.with_traceback(tb)
raise value
PY2:
exec('def reraise(tp, value, tb=None): raise tp, value, tb') #在python3下会报语法错误,通过exec绕过检查
bottle
PY3:
def _raise(*a):
raise a[0](a[1]).with_traceback(a[2])
PY2:
exec(compile('def _raise(*a): raise a[0], a[1], a[2]', '<py3fix>', 'exec'))