Keeping this stackoverflow answer(Python) handy for future use:
try:
func1()
except Exception as ex:
trace = []
tb = ex.__traceback__
while tb is not None:
trace.append({
"filename": tb.tb_frame.f_code.co_filename,
"name": tb.tb_frame.f_code.co_name,
"lineno": tb.tb_lineno
})
tb = tb.tb_next
print(str({
'type': type(ex).__name__,
'message': str(ex),
'trace': trace
}))Output:
{
"type": "ZeroDivisionError",
"message": "division by zero",
"trace": [
{
"filename": "/var/playground/main.py",
"name": "<module>",
"lineno": 16
},
{
"filename": "/var/playground/main.py",
"name": "func1",
"lineno": 11
},
{
"filename": "/var/playground/main.py",
"name": "func2",
"lineno": 7
},
{
"filename": "/var/playground/my.py",
"name": "test",
"lineno": 2
}
]
}StackOverflow link: https://stackoverflow.com/a/64212552