This documentation is archived and is not being maintained.

5.3.3.15 Try-catch-finally statements

Visual Studio .NET 2003

Definite assignment analysis for a try-catch-finally statement of the form:

try try-block 
catch(...) catch-block-1
...
catch(...) catch-block-n
finally finally-block

is done as if the statement were a try-finally statement enclosing a try-catch statement:

try {
   try try-block 
   catch(...) catch-block-1
   ...
   catch(...) catch-block-n
}
finally finally-block

The following example demonstrates how the different blocks of a try statement (Section 8.10) affect definite assignment.

class A
{
   static void F() {
      int i, j;
      try {
         goto LABEL;
         // neither i nor j definitely assigned
         i = 1;
         // i definitely assigned
      }
      catch {
         // neither i nor j definitely assigned
         i = 3;
         // i definitely assigned
      }
      finally {
         // neither i nor j definitely assigned
         j = 5;
         // j definitely assigned
      }
      // i and j definitely assigned
   LABEL;
      // j definitely assigned

   }
}
Show: