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

# traceback

{% embed url="https://docs.python.org/3/library/traceback.html" %}

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

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

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

```python
# ------------------------------------------------------------------------------
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)
