!!! Blocks %%info This is __Exercise 2__ of the [Micro Python Tutorial]. %% In Python, a block is a group of statements that belong together, forming the body of a function, loop, class or other structure. A block is defined by an initial line followed by the contents of the block indented four characters. As an example, a {{for}} block sets up a loop: %%filename main.py %% %%python for i in range(0,5): print(i) %% %%warning Notice that the contents of the {{for}} block are indented four characters. This causes the contents of the block to be executed five times, printing the value of the index variable ("i") each time. %% !! The try-except-finally Block There is a {{try-except-finally}} structure called a __compound statement__, consisting of three separate __blocks__. This is ideal for a main.py file, and is also a very common and useful structure. It is composed of three parts: * {{try}}: this block contains is the code we want to ''try'' to execute * {{except}}: this block catches any errors or exceptions that occur and executes the block, handling the exception * {{finally}}: no matter what happens, this block will be executed after the {{try}} (and possibly {{except}}) blocks are executed In the below example, there is a {{try}} block, followed by an {{except}} block, followed by a {{finally}} block. A {{try}} block must be followed by an {{except}} block and/or a {{finally}} block (you must have one of them). %%filename main.py %% %%python try: print('hello world.') # remember to indent the insides of your blocks by 4 characters! except Exception: # this block is executed if there is an exception (error) print('an error occurred.') finally: # this is always executed, no matter what print('complete.') %% If you want to use the exception to print out an error message you need to assign it to a variable (in this case, we've used {{ex}}). %%filename main.py %% %%python try: print('hello world.') except Exception as ex: # we assign the Exception to the variable 'ex' print('an error occurred: {}'.format(ex)) finally: print('complete.') %% !! Optional Blocks As mentioned above, in the {{try-except-finally}} compound statement, the {{except}} or {{finally}} block is optional. If you don't need to do anything after exiting the {{try}} block you can leave off the {{finally}} block: %%filename main.py %% %%python try: print('hello world.') except Exception: print('an error occurred.') %% or, just using {{finally}}: %%filename main.py %% %%python try: print('hello world.') finally: print('complete.') %% This would be useful when you want the Exception to be passed on and handled somewhere else. ---- __Previous:__ [MicroPython Tutorial Exercise 1|MicroPythonTutorialExercise01]: main.py \\ __Next:__ [MicroPython Tutorial Exercise 3|MicroPythonTutorialExercise03]: functions