traceback

Цей модуль надає стандартний інтерфейс для виділення, форматування та друку трасування стека програм Python. Він точно імітує поведінку інтерпретатора Python, коли він друкує трасування стека.

Как правильно исправлять ошибки в коде https://python-scripts.com/python-tracebac

Вивести номер рядка, з коду.

Наприклад, моя ф-ція send_response в рязі передачі помилки повертає номер рядка, де була викликана.

# ------------------------------------------------------------------------------
def send_response(code, **data):

	data['lineno'] = 0 if code == 0 else traceback.extract_stack()[-2].lineno

	response = {}  # словник-відповідь в JS
	response['code'] = code
	response['data'] = data

	log.debug(f'Send Response = {response}')
	print(json.dumps(response))
	sys.exit(code)

traceback.extract_stack()[-2] - (передостанній [-2]) - виклик цієї функції. Рахуємо від кінця, т.я. викликів може бути кілька, і перший елемент у стеку буде відповідати самому зовнішньому виклику (наприклад, якщо спочатку викликається функція main, а з неї функція, то перший елемент стека буде викликом функції main)

Last updated