print
и traceback
путаются, хотя print
должно произойти раньше, traceback
напечатано выше, между и ниже.
try:
zerrr()
except Exception as e:
error_json, raise_error, throw = excHandler(e, throw=False)
# print(type(k))
if throw:
raise Exception(raise_error)
error_dict = json.loads(error_json)
print(error_dict)
try:
typerr()
except Exception as e:
error_json, raise_error, throw = excHandler(e, throw=True)
# print(type(k))
if throw:
# raise Exception(raise_error)
traceback.print_exc()
error_dict = json.loads(error_json)
# print(error_dict)
finally:
# Necessary calls
musthappen()
Вывод первого запуска:
Traceback (most recent call last):
{'1515142630.125066': {'Line': 48, 'Error_call': "'return 1/0'", 'File': 'C:/Users/ankit.chouksey/Mariott/Pys/exclog.py', 'Error': ['ZeroDivisionError: division by zero\n'], 'Function': 'zerrr'}}
File "C:/Users/ankit.chouksey/Mariott/Pys/exclog.py", line 69, in <module>
This is always happening irrespective of exceptions
typerr()
File "C:/Users/ankit.chouksey/Mariott/Pys/exclog.py", line 51, in typerr
return 1+'a'
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Первый запуск:
Словарь должен был быть напечатан до трассировки, но он печатается внутри. Точно так же утверждение «Это всегда происходит независимо от исключений» должно было печатать после трассировки, но оно печатается между ними.
Вывод второго запуска:
Traceback (most recent call last):
{'1515143476.309911': {'Line': 48, 'Error': ['ZeroDivisionError: division by zero\n'], 'Function': 'zerrr', 'Error_call': "'return 1/0'", 'File': 'C:/Users/ankit.chouksey/Mariott/Pys/exclog.py'}}
This is always happening irrespective of exceptions
File "C:/Users/ankit.chouksey/Mariott/Pys/exclog.py", line 69, in <module>
typerr()
File "C:/Users/ankit.chouksey/Mariott/Pys/exclog.py", line 51, in typerr
return 1+'a'
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Второй запуск: оба отпечатка вместе, но внутри трассировки.