The finally block is always executed, even if the try block encounters an exception. It's for making sure any resources like file streams or pointers get cleaned up.
Used as Urwumpe described, it's basically error handling for people too lazy to have error handling in their error handling...
But aren't instructions after a try block executed whether or not there's an error thrown in the block?