In Java, you use it for anything that you want to execute regardless of whether you used a "return", just ran through the try block, or had an exception caught.
For example, closing a database session or a JMS connection, or deallocating some OS resource.
I am guessing it is similar in .NET?