traceback
The Python traceback
module provides utilities for working with error tracebacks in Python programs. It’s particularly useful for debugging and error handling, as it allows you to capture and display the call stack of a program when an exception occurs.
Here’s a quick example:
>>> import traceback
>>> try:
... {"a": 1}["b"]
... except KeyError:
... traceback.print_exc()
Traceback (most recent call last):
...
KeyError: 'b'
Key Features
- Extracts stack traces from traceback objects
- Formats stack traces for display
- Prints exceptions and their stack traces to standard error
- Supports customization of traceback formatting
- Captures complete exception information for debugging and
logging
- Works with both caught and uncaught exceptions
Frequently Used Classes and Functions
Object | Type | Description |
---|---|---|
traceback.format_exc() |
Function | Returns a string representation of the current exception |
traceback.print_exc() |
Function | Prints the current exception to sys.stderr |
traceback.extract_tb() |
Function | Extracts and returns a list of traceback frames |
traceback.format_tb() |
Function | Formats a list of traceback frames as strings |
traceback.format_list() |
Function | Formats a list of traceback frames as string |
Examples
Formats and prints the current exception’s stack trace:
>>> import traceback
>>> try:
... int("abc")
... except ValueError:
... print(traceback.format_exc())
Traceback (most recent call last):
...
ValueError: invalid literal for int() with base 10: 'abc'
Extracts and formats traceback information:
>>> lst = []
>>> try:
... lst[1]
... except IndexError as e:
... tb = traceback.extract_tb(e.__traceback__)
... print(traceback.format_list(tb))
[' File "<stdin>", line 3, in <module>\n']
Common Use Cases
- Capturing and logging error stack traces for debugging
- Displaying detailed error messages to users
- Analyzing exceptions in a post-mortem debugging scenario
- Writing exception details to log files for later review
- Integrating with error monitoring or reporting systems
Real-World Example
Say that you need to read a file and handle errors gracefully if the file is missing. The traceback
module can be used to capture and log detailed information about such exceptions:
>>> import traceback
>>> try:
... # Open a non-existing file
... with open("file.txt", mode="r", encoding="utf-8") as file:
... content = file.read()
... except FileNotFoundError as e:
... with open("error.log", "w") as log_file:
... log_file.write(traceback.format_exc())
...
By writing the stack trace to error.log
, you ensure that detailed error information is available for future review—making debugging and troubleshooting much easier.
This technique provides a reliable way to capture detailed error information for later debugging and troubleshooting.
Related Resources
Tutorial
Understanding the Python Traceback
In this step-by-step tutorial, you'll learn how to read and understand the information you can get from a Python traceback. You'll walk through several examples of tracebacks and see some of the most common tracebacks in Python.
For additional information on related topics, take a look at the following resources:
- Python's Built-in Exceptions: A Walkthrough With Examples (Tutorial)
- Python Exceptions: An Introduction (Tutorial)
- Python's raise: Effectively Raising Exceptions in Your Code (Tutorial)
- Getting the Most Out of a Python Traceback (Course)
- Working With Python's Built-in Exceptions (Course)
- Python's Built-in Exceptions: A Walkthrough With Examples (Quiz)
- Introduction to Python Exceptions (Course)
- Raising and Handling Python Exceptions (Course)
- Python Exceptions: An Introduction (Quiz)
- Using raise for Effective Exceptions (Course)
- Python's raise: Effectively Raising Exceptions in Your Code (Quiz)
By Leodanis Pozo Ramos • Updated July 25, 2025