Well, it's really not an error since the "missing" opening brace is located just before the keyword finally above the code block. This use of the bracket notation is common in compiler and language design and the brackets ("[" and "]") are used to show an optional element of the syntax. In C#, the finally block is optional with a try-catch, hence the brackets.
Jack Purdum, Ph.D.
Author: Beginning C# 3.0: Introduction to Object Oriented Programming (and 14 other programming texts)