0
0
PythonHow-ToBeginner · 3 min read

How to Use Traceback Module in Python for Error Handling

Use the traceback module in Python to print or format the stack trace of exceptions for debugging. Import traceback and call functions like traceback.print_exc() inside an except block to see detailed error information.
📐

Syntax

The traceback module provides functions to extract, format, and print stack traces of exceptions. Common functions include:

  • traceback.print_exc(): Prints the current exception's stack trace to standard error.
  • traceback.format_exc(): Returns the current exception's stack trace as a string.
  • traceback.format_tb(tb): Formats a traceback object tb into a list of strings.
  • traceback.extract_tb(tb): Extracts a list of traceback entries from a traceback object.

These functions are typically used inside an except block to get detailed error info.

python
import traceback

try:
    # code that may raise an exception
    pass
except Exception as e:
    traceback.print_exc()  # prints the full traceback to stderr
    tb_str = traceback.format_exc()  # gets traceback as string
    print(tb_str)
💻

Example

This example shows how to catch an exception and print its full traceback using traceback.print_exc(). It helps you see where the error happened.

python
import traceback

def divide(a, b):
    return a / b

try:
    result = divide(5, 0)
except ZeroDivisionError:
    print("Caught an error:")
    traceback.print_exc()
Output
Caught an error: Traceback (most recent call last): File "<stdin>", line 7, in <module> File "<stdin>", line 3, in divide ZeroDivisionError: division by zero
⚠️

Common Pitfalls

Common mistakes when using traceback include:

  • Calling traceback.print_exc() outside an except block, which prints nothing because no exception is active.
  • Not importing the traceback module before use.
  • Confusing traceback.format_exc() (returns string) with traceback.print_exc() (prints directly).
python
import traceback

# Wrong: calling outside except block prints nothing
try:
    traceback.print_exc()
except Exception:
    pass

try:
    1 / 0
except ZeroDivisionError:
    # Right: call inside except block
    traceback.print_exc()
Output
Traceback (most recent call last): File "<stdin>", line 10, in <module> ZeroDivisionError: division by zero
📊

Quick Reference

FunctionDescription
traceback.print_exc()Prints the current exception traceback to stderr.
traceback.format_exc()Returns the current exception traceback as a string.
traceback.format_tb(tb)Formats a traceback object into a list of strings.
traceback.extract_tb(tb)Extracts traceback entries from a traceback object.

Key Takeaways

Use traceback functions inside except blocks to get detailed error info.
traceback.print_exc() prints the error stack trace directly to standard error.
traceback.format_exc() returns the stack trace as a string for logging or display.
Do not call traceback functions outside exception handling blocks.
Import the traceback module before using its functions.