1. What is an exception
An exception is an operation performed by an interpreter or compiler when an error is detected during the execution of a program. As a general rule, the execution of the program is interrupted, and a more or less explicit error message is displayed.
a = 3 b = 0 print (a / b) builtins.ZeroDivisionError: division by zero
additional information is displayed, including where the script was found. The error message itself has two parts separated by a double point:
- first the type of error that is in case: builtins.ZeroDivisionError
- then a specific information of this error which is in this case: division by zero
In many cases, it is possible to predict in advance some of the errors that may occur at a particular point in the program, and to include specific instructions at this point, which will be activated only if these errors occur.
In high-level languages such as Python, it is also possible to associate a monitoring mechanism with a whole set of instructions, and thus to simplify the handling of errors that may occur in any of these instructions.
2. Structure and syntax of an exception
A procedure of this type is usually called an exception handling procedure. Python's uses the statement set:
try except else,
that allow to catch an error and execute a specific script portion of this error.
It works as follows:
The block of statements that directly follows a try statement is executed by Python if there are no errors. If an error occurs while one of these statements is executing, then Python cancels that offending statement and executes instead the code included in the block following the except statement. If no error has occurred in the statements that follow try, then the block that follows the else statement is executed (if this statement is present).
In any case, program execution may continue with subsequent instructions.
Consider for example of a script that asks the user to type his phone number and that by mistake he types his name! we do not want the program to crash! We only want a warning to be displayed:
"Please enter a number type!"
In this way, we give the user the opportunity to try again to correct their mistake!
Structure and syntax
try: [Code that can throw an exception] except MyException: [Code in case of exception] else: [Code in case of no exception] [code in all cases]
Example of exception handling: intercept a division by zero.
n = int (input ("Type a value of number n: ")) m = int (input ("Type a value of number m: ")) try: q = n/m print ("The quotient is:" + q) except ZeroDivisionError: print ("No division by zero please")
We can ignore the ZeroDivisionError instruction and put in place only the except statement:
Example without ZeroDivisionError statement
n = int (input ("Type a value of number n: ")) m = int (input ("Type a value of number m: ")) try: q = n/m print ("The quotient is:" + q) except: print ("No division by zero please")
3. The finally statement
The finally statement is used to execute instructions regardless of the errors generated or not (and even if there is a return). In all cases the instructions placed in finally will be executed.
Example with the finally statement
n = int (input ("Type a value of number n: ")) m = int (input ("Type a value of number m: ")) try: q = n/m print ("The quotient is:" + q) except ZeroDivisionError: print ("No division by zero please") finally: print ("End of the script")