1__doc__ = u""" 2>>> def bar(): 3... try: 4... foo() 5... except ValueError: 6... if IS_PY3: 7... print(isinstance(sys.exc_info()[1].__cause__, TypeError)) 8... else: 9... print(True) 10 11>>> bar() 12True 13 14>>> print(sys.exc_info()) 15(None, None, None) 16 17>>> def bar2(): 18... try: 19... foo2() 20... except ValueError: 21... if IS_PY3: 22... cause = sys.exc_info()[1].__cause__ 23... print(isinstance(cause, TypeError)) 24... print(cause.args==('value',)) 25... pass 26... else: 27... print(True) 28... print(True) 29 30>>> bar2() 31True 32True 33""" 34 35import sys 36IS_PY3 = sys.version_info[0] >= 3 37if not IS_PY3: 38 sys.exc_clear() 39 40def foo(): 41 try: 42 raise TypeError 43 except TypeError: 44 raise ValueError from TypeError 45 46def foo2(): 47 try: 48 raise TypeError 49 except TypeError: 50 raise ValueError() from TypeError('value') 51 52