Python provides the
finally statements in order to catch exceptions and manage them properly. The exception management generally named as
try and except for Python terminology. In this tutorial, we examine how to catch manage and execute reliable code for Python errors and exceptions.
try, catch, else and finally Syntax
finally keywords have following syntax. The try statement is a must but other statements are optional and can be used according to the situation.
try: CODE except: CODE else: CODE finally: CODE
Catch Exceptions with try and except
The most basic example about try and catch is only using the
except statement without other statements like
finally . The
try statement is used to detect the exception where it is used as a code block and all code that can create exception is located inside the try statement code block. The
exception statement is used to catch exceptions and execute code after exception. In the following example, we try to use an undefined variable that creates
NameError: name 'x' is not defined exception. But we will catch this exception with the except statement and print “This is an undefined variable exception” message.
try: print(x) except: print("This is an undefined variable exception")
Catch Named Exceptions
A code block may throw different type of exceptions which are related with different causes. The named exceptions are used to only catch specific exception type. Only the specified exception type it catched and other exceptions are just skipped. For example if a variable is not defined and try to be used the
NameError exception is thrown. We can use
except NameError statement to catch only NameError type exceptions.
try: print(x) except NameError: print("This is an undefined variable exception")
Catch Multiple Exceptions with except
Multiple exceptions can be caught by using the except statement. Just defined new except block after the last except. In the following example, we define 3 except block which matches a different type of exceptions like NameError, ZeroDivisionError, and default exception.
try: print(x) except NameError: print("This is an undefined variable exception") except ZeroDivisionError: print("This is an zero division exception") except: print("An exception is occured")
Alternative the zero division exception can be tested in the following example.
try: print(1/0) except NameError: print("This is an undefined variable exception") except ZeroDivisionError: print("This is an zero division exception") except: print("An exception is occured")
Run Code with else If There Is No Exceptions
The try and except statements also provides the else statement. If there is no exception we can executed specific code block by using the
else statement after except blocks. In the following code if there is not exception the message “There is no exception” is printed to the screen.
try: print("Everything is OK") except: print("An exception is occured") else: print("There is no exception")
Run Code Regardless of Exception with finally
Another useful feature of the try and except statement is using the finally statement which is used to execute code if there is an exception. The finally statement has a code bloock which is executed if there is an exception in the try code block.
try: print(1/0) except: print("An exception is occured") finally: print("We have solved exception related problems")
Throw Exception with raise Statement
The try and except statements are used to catch when an exception occurs. The exception is automatically raised by Python interpreter inside the try statement block. This way of raising exception is called implicit exception raising. Alternatively we can rais exceptions explicitly by using the
raise keyword and the exception type with message. The exceptions are defined as objects and accepts string parameters in order to get message about exception.
x = 5 raise Exception("I don't like x value")
Alternatively we can raise explicit exception side the try and except block like below.
try: x=5 if x == 5: raise Except("I don't like x value") except: print("An exception is occured")