Catch multiple exceptions in Python

In Python, you can catch multiple exceptions in a single except block by using a tuple of exception types. Here's an example:

Code Example: Catching Multiple Exceptions

def process_data(data):
    try:
        # Simulate a potential error
        result = 10 / data  # Could raise ZeroDivisionError or TypeError
        print(f"Result: {result}")
    except (ZeroDivisionError, TypeError) as e:
        print(f"Error caught: {e.__class__.__name__} - {e}")
    except Exception as e:
        # Catch any other exceptions
        print(f"Unexpected error: {e.__class__.__name__} - {e}")
    else:
        # Execute if no exception occurs
        print("Processing completed successfully.")
    finally:
        # Execute whether or not an exception occurs
        print("Cleanup actions (if any).")

# Test cases
process_data(5)   # Valid input
process_data(0)   # ZeroDivisionError
process_data("a") # TypeError

Output

Result: 2.0
Processing completed successfully.
Cleanup actions (if any).

Error caught: ZeroDivisionError - division by zero
Cleanup actions (if any).

Error caught: TypeError - unsupported operand type(s) for /: 'int' and 'str'
Cleanup actions (if any).

Explanation

  1. Catch Multiple Exceptions:

    • The except (ZeroDivisionError, TypeError) as e line catches either of these exceptions and stores the exception instance in e.
    • You can access the exception type with e.__class__.__name__ and the message with str(e).
  2. Fallback except Block:

    • The final except Exception block catches any unexpected exceptions.
  3. else Block:

    • Runs if no exception occurs, useful for handling success cases.
  4. finally Block:

    • Executes regardless of whether an exception was raised, often used for cleanup operations (e.g., closing files or releasing resources).

Notes

  • Use multiple except blocks for more granular exception handling when needed.
  • Avoid overusing a blanket except Exception unless absolutely necessary, as it can hide programming errors.

댓글

이 블로그의 인기 게시물

Using the MinIO API via curl

The logs of the kubelet service

how to delete all issues on project in sentry, 센트리 이슈 삭제하기

Reactjs datetime range picker

운영체제를 개발 방법

In HBase, the "memory to disk" flush operation

Kafka consumer in a Spring Boot application using a scheduled task

[Ubuntu] Apache2.4.x 설치

difference between truncate and truncate_preserve in hbase

dagrun_timeout of Airflow