The Python sys.exc_info() method that returns a tuple containing information about the most recent exception caught by an except clause. The tuple consists of three elements, they are the exception type, the exception value and a traceback object.
This method is particularly useful for error handling and debugging as it provides detailed information about the exception context. By using 'sys.exc_info()' method developers can programmatically access and manipulate exception details by improving error logging and handling capabilities within their applications.
SyntaxFollowing is the syntax and parameters of Python sys.exc_info() method −
sys.exc_info()Parameter
This method does not return any values.
Return valueThis method returns tuple containing three values (type, value, traceback).
Example 1Following is the basic example in which, a ZeroDivisionError is raised and caught. The sys.exc_info() method retrieves information about the exception −
import sys try: 1 / 0 except ZeroDivisionError: exc_type, exc_value, exc_traceback = sys.exc_info() print(f"Exception type: {exc_type}") print(f"Exception value: {exc_value}") print(f"Traceback object: {exc_traceback}")Output
Exception type: <class 'ZeroDivisionError'> Exception value: division by zero Traceback object: <traceback object at 0x0000016DCBD35000>Example 2
This example uses sys.exc_info() method to retrieve the exception details and then uses the traceback module to print the traceback details −
import sys import traceback def divide(a, b): try: return a / b except ZeroDivisionError: exc_type, exc_value, exc_traceback = sys.exc_info() print(f"Exception type: {exc_type}") print(f"Exception value: {exc_value}") print("Traceback details:") traceback.print_tb(exc_traceback) divide(1, 0)Output
Exception type: <class 'ZeroDivisionError'> Exception value: division by zero Traceback details: File "\sample.py", line 6, in divide return a / b ~~^~~Example 3
Now in this example we show how nested exception handling can be structured in custom functions −
import sys import traceback try: try: result = int('not a number') except ValueError: exc_type, exc_value, exc_traceback = sys.exc_info() print("Inner exception info:") print(f" Type: {exc_type}") print(f" Value: {exc_value}") traceback.print_tb(exc_traceback) # Re-raise the exception to the outer try block raise except Exception as e: print("Outer exception info:") exc_type, exc_value, exc_traceback = sys.exc_info() print(f" Type: {exc_type}") print(f" Value: {exc_value}") traceback.print_tb(exc_traceback)Output
Inner exception info: Type: <class 'ValueError'> Value: invalid literal for int() with base 10: 'not a number' File "\sample.py", line 6, in <module> result = int('not a number') ^^^^^^^^^^^^^^^^^^^ Outer exception info: Type: <class 'ValueError'> Value: invalid literal for int() with base 10: 'not a number' File "\sample.py", line 6, in <module> result = int('not a number') ^^^^^^^^^^^^^^^^^^^
python_modules.htm
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4