При выполнении следующего кода я не могу получить ожидаемый номер строки из информации трассировки, которую я извлек из sys.exc_info()
внутри декоратора.
import sys
def get_traceback(function):
def wrapper(*args, **kwargs):
try:
function(*args, **kwargs) # line 7
except:
return sys.exc_info()[2]
return wrapper
def inner():
raise ValueError() # line 14 <--- the expected line number
@get_traceback
def outer():
inner() # line 19
tb = outer()
print(tb.tb_lineno) # prints 7
print(tb.tb_next.tb_lineno) # prints 19
При аналогичном вызове на sys.exc_info()
вне декоратора я могу получить соответствующий номер строки. В чем причина этого и что я могу сделать, чтобы получить правильный номер строки?
Заранее спасибо!