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.

댓글

이 블로그의 인기 게시물

Install and run an FTP server using Docker

Using the MinIO API via curl

PYTHONPATH, Python 모듈 환경설정

Elasticsearch Ingest API

오늘의 문장2

How to checkout branch of remote git, 깃 리모트 브랜치 체크아웃

Fundamentals of English Grammar #1

To switch to a specific tag in a Git repository

You can use Sublime Text from the command line by utilizing the subl command

티베트-버마어파 와 한어파(중국어파)의 어순 비교