Exception Handling in Python
In Python, exception handling allows you to manage runtime errors gracefully
instead of letting the program crash. This is done using the
try,
except,
else, and
finally
blocks.
Understanding the Exception Blocks
- try → Tests a block of code for possible errors
- except → Handles the error if one occurs
- else → Executes when no error occurs
- finally → Executes no matter what (error or no error)
Basic Exception Handling
When an error occurs, Python normally stops execution and shows an error
message. Using
try and
except, you
can catch and handle that error.
Example: Handling an Undefined Variable
Since
total is not
defined, the
except block
runs instead of crashing the program.
Program Without Exception Handling
Without
try-except,
the program stops immediately when an error occurs.
Handling Multiple Exceptions
You can use multiple
except blocks
to handle different types of errors differently.
Example: Specific vs General Errors
This allows you to provide more meaningful error messages depending on what goes wrong.
Using the else Block
The
else block
runs only if no exception occurs in the
try block.
Example: Successful Execution
Using the finally Block
The
finally block
always executes, whether an exception occurs or not. It is commonly used for
cleanup tasks like closing files or releasing resources.
Example: Finally Block Execution
Real-World Example: File Handling with Exceptions
The
finally block
ensures that a file is closed properly, preventing resource leaks even if an
error occurs.
(Note: In a robust script, it is best practice to check if the file was
successfully opened before calling
close() to
avoid secondary NameErrors).
Raising Exceptions Manually
As a developer, you can raise your own exceptions when certain conditions
are met using the
raise
keyword.
Example: Raise an Exception for Invalid Values
Raising Specific Exception Types
You can raise built-in exception types like
TypeError,
ValueError,
etc.
Why Use Exception Handling?
- Prevents program crashes
- Improves user experience
- Makes debugging easier
- Ensures clean resource management
