Python – Exception Handling

In programming, Handling exceptions is a must when it comes to real life applications. Python has many built-in exceptions that are raised when your program encounters an error. When these exceptions occur, the Python interpreter stops the current process and passes it to the calling process until it is handled. If not handled, the program will crash.

We must handle any exception raised within our application. We do that by use try and except.

Error being raised

result = 12 / 0
print(result)

# output

Traceback (most recent call last):
  File "/Users/folaukaveinga/Github/python/main.py", line 101, in <module>
    exceptions.show()
  File "/Users/folaukaveinga/Github/python/exceptions.py", line 6, in show
    result = 12 / 0
ZeroDivisionError: division by zero

 

Handling raised error

The critical operation which can raise an exception is placed inside the try clause. The code that handles the exceptions is written in the except clause.

try:
    result = 12 / 0
    print(result)
except ZeroDivisionError as e:
    print(e)

print("done")

Here the program continued its executing to the end where is before it stopped when exception was raised.

 

Handling specific errors

try clause can have any number of except clauses to handle different exceptions, however, only one will be executed in case an exception occurs.

try:
   # do something
   pass

except ValueError:
   # handle ValueError exception
   pass

except (TypeError, ZeroDivisionError):
   # handle multiple exceptions
   # TypeError and ZeroDivisionError
   pass

except:
   # handle all other exceptions
   pass

 

Raise an error

Exceptions are raised by Python when errors occur at runtime. We can also manually raise exceptions using the raise keyword. We can optionally pass values to the exception to clarify why that exception was raised.

name = input("what is your name? ")
if name == None or len(name) ==0 :
   raise ValueError("invalid name")

# output - if you don't put in anything
Traceback (most recent call last):
  File "/Users/folaukaveinga/Github/python/main.py", line 101, in <module>
    exceptions.show()
  File "/Users/folaukaveinga/Github/python/exceptions.py", line 15, in show
    raise ValueError("invalid name")
ValueError: invalid name

 

Try with else clause

In some situations, you might want to run a certain block of code if the code block inside try ran without any errors. For these cases, you can use the optional else keyword with the try statement. Note that exceptions in the else clause are not handled by the preceding except clauses.

try:
    result = 12 / 0
    print(result)
except ZeroDivisionError as e:
    print(e)
else:
    print("all good")

Try with finally

The try statement in Python can have an optional finally clause. This clause is executed no matter what, and is generally used to release external resources. In all these circumstances, we must clean up the resource before the program comes to a halt whether it successfully ran or not. These actions (closing a file, GUI or disconnecting from network) are performed in the finally clause to guarantee the execution.

try:
    f = open("test.txt", encoding='utf-8')
    # perform file operations
finally:
    f.close()
    print("file closed")

Source code on Github

 

 

 




Subscribe To Our Newsletter
You will receive our latest post and tutorial.
Thank you for subscribing!

required
required


Leave a Reply

Your email address will not be published.