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
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
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")