Okay I will try and explain the example of the try/catch/finally as I understand it.
First you open with 'try', this is telling the program to try and do all the things in this area. Here it is trying to create a new 'SteamReader' process (object), and then use it to read the whole file and show a dialog box of all the content.
Then the 'catch' will catch all errors that are thrown. I have read that it is good practice to code it like this so that you can show more precise what has happened wrong. It's kind of like a 'cond' statement in Lisp, and a 'case' (I think this is correct) in VBA. It will step through each 'catch' and fire the first one that it matches.
The last part is the 'finally' part. Here is where you do what you have to do to close objects that might be opened in the 'try' part. Anything that NEEDS to be done, goes in this part. This part is called no matter what. The 'catch' part is only called when an error happens, but the 'finally' part is called weither an error happens or not.
Hope that makes some sense, as that is how I understand it.
If any statements are wrong, please let me know.