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
Catch Multiple Exceptions:
- The
except (ZeroDivisionError, TypeError) as e
line catches either of these exceptions and stores the exception instance ine
. - You can access the exception type with
e.__class__.__name__
and the message withstr(e)
.
- The
Fallback
except
Block:- The final
except Exception
block catches any unexpected exceptions.
- The final
else
Block:- Runs if no exception occurs, useful for handling success cases.
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.
댓글
댓글 쓰기