编程语言
首页 > 编程语言> > Python兼容性:捕获异常

Python兼容性:捕获异常

作者:互联网

我有一个应用程序,需要在所有“现代”Python版本中工作,这意味着2.5-3.2.我不想要两个代码库,所以2to3不是一个选项.

考虑这样的事情:

def func(input):
    if input != 'xyz':
        raise MyException(some_function(input))
    return some_other_function(input)

如何捕获此异常,以获取对异常对象的访问权限?
除了MyException之外,e:在Python 3中无效,除了MyException,因为e:在python 2.5中无效.

显然,它本可以返回异常对象,但我希望,我不必这样做.

解决方法:

这个问题在in the Py3k docs解决.解决方案是检查sys.exc_info()

from __future__ import print_function

try:
    raise Exception()
except Exception:
    import sys
    print(sys.exc_info()) # => (<type 'exceptions.Exception'>, Exception(), <traceback object at 0x101c39830>) 
    exc = sys.exc_info()[1]
    print(type(exc)) # => <type 'exceptions.Exception'>
    print([a for a in dir(exc) if not a.startswith('__')]) # => ['args', 'message']

标签:python,exception-handling,compatibility,python-3-x,python-2-5
来源: https://codeday.me/bug/20190620/1249807.html