Handling errors is an important aspect of writing robust code, and Python provides us with exception handling to accomplish this. By using try-except blocks, we can handle errors that might occur during the execution of our code.
To use exception handling, we wrap the lines of code that might raise an error in a try:
block. If an error occurs, Python will alert us, and we can specify how to handle that particular error using one or more except
blocks.
Here’s an example:
try:
# some lines of code
except <ERROR1>:
# handler <ERROR1>
except <ERROR2>:
# handler <ERROR2>
You can catch all exceptions by using except
without specifying an error type:
try:
# some lines of code
except <ERROR1>:
# handler <ERROR1>
except:
# catch all other exceptions
If no exceptions were raised, the code inside the else
block will be executed:
try:
# some lines of code
except <ERROR1>:
# handler <ERROR1>
except <ERROR2>:
# handler <ERROR2>
else:
# no exceptions were raised, the code ran successfully
In addition to the try
, except
, and else
blocks, you can use a finally
block to perform an operation regardless of whether an error occurred or not:
try:
# some lines of code
except <ERROR1>:
# handler <ERROR1>
except <ERROR2>:
# handler <ERROR2>
else:
# no exceptions were raised, the code ran successfully
finally:
# do something in any case
The specific error that will occur depends on the operation being performed. For example, if you try to divide a number by zero, you will get a ZeroDivisionError
. If you have a type conversion issue, you might get a TypeError
.
Here’s an example:
result = 2 / 0
print(result)
This code will terminate with an error:
Traceback (most recent call last):
File "main.py", line 1, in <module>
result = 2 / 0
ZeroDivisionError: division by zero
By wrapping the problematic operation in a try:
block, we can handle the error gracefully and continue with the program:
try:
result = 2 / 0
except ZeroDivisionError:
print('Cannot divide by zero!')
finally:
result = 1
print(result) # 1
You can also raise your own exceptions using the raise
statement:
raise Exception('An error occurred!')
To handle this exception, you can use:
try:
raise Exception('An error occurred!')
except Exception as error:
print(error)
In addition to the built-in exceptions, you can define your own custom exception classes by extending the base Exception
class:
class DogNotFoundException(Exception):
pass
Then, you can raise and handle your custom exceptions like this:
try:
raise DogNotFoundException()
except DogNotFoundException:
print('Dog not found!')
Tags: Python, exceptions, error handling, try-except blocks, raising exceptions, custom exceptions