Open In App

Python Print Exception

Last Updated : 12 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In Python, exceptions are errors that occur at runtime and can crash your program if not handled. While catching exceptions is important, printing them helps us understand what went wrong and where. In this article, we'll focus on different ways to print exceptions.

Using as keyword

as keyword lets us store the exception in a variable so you can access its message. We catch a specific error like ValueError or ZeroDivisionError and print the message directly. This is the most common and beginner-friendly way to print exceptions. It keeps the output clean and easy to understand.

Python
try:
    num = int(input("Enter a number: "))
    print(10 / num)

except ValueError as ve:
    print("ValueError:", ve)

except ZeroDivisionError as zde:
    print("ZeroDivisionError:", zde)

Output

Enter a number: gfg 
ValueError: invalid literal for int() with base 10: 'gfg'

Explanation: This code asks the user for a number, converts it to an integer and divides 10 by it. If the input isn't a valid integer, a ValueError is printed. If the input is 0, a ZeroDivisionError occurs since division by zero isn’t allowed and that error message is printed.

Using type()

This method helps us print the type of exception you caught, like <class 'ValueError'>. It's useful when we're not sure what kind of error occurred. Along with type(e), we can also print e to get the actual error message. It’s handy for debugging or logging detailed error types.

Python
try:
    num = int("text")

except ValueError as e:
    print("Type of Exception:", type(e))
    print("Message:", e)

Output
Type of Exception: <class 'ValueError'>
Message: invalid literal for int() with base 10: 'text'

Explanation: This code tries to convert the string "text" into an integer, which isn’t possible and raises a ValueError. The except block catches the error, prints its type using type(e) and displays the error message using e.

Using traceback.print_exc()

The traceback module prints the full traceback of the exception. It shows the exact line of code and function call that caused the error. Very useful when you're debugging large programs or need detailed logs. Make sure to import traceback before using it.

Python
import traceback

try:
    res = 10 / 0

except ZeroDivisionError as e:
    print("Traceback Info:")
    traceback.print_exc()

Output

Traceback Info: 
Traceback (most recent call last):
File "<ipython-input-36-a96b18b23dc7>", line 4, in <cell line: 0>
res = 10 / 0
~~~^~~
ZeroDivisionError: division by zero

Explanation: This code tries to divide 10 by 0, which raises a ZeroDivisionError. The except block catches the error and uses traceback.print_exc() to print a detailed traceback, showing where the error occurred in the code.

Using str() and repr()

str() returns a user-friendly version of the exception message and repr() gives a more detailed and developer-focused representation of the error. Using both can help differentiate between readable output and debug-level logs. This method is useful when you want more control over how the exception is displayed.

Python
try:
    int("not_a_number")

except ValueError as e:
    print("str():", str(e))
    print("repr():", repr(e))

Output
str(): invalid literal for int() with base 10: 'not_a_number'
repr(): ValueError("invalid literal for int() with base 10: 'not_a_number'")

Explanation: This code tries to convert the string "not_a_number" into an integer, which raises a ValueError. The except block catches the error and prints the message using str(e) for a readable format and repr(e) to show the official string representation, which includes the exception type and message.


Next Article

Similar Reads