12.3.3.15 Try-catch-finally statements
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
[Example: The following example demonstrates how the different blocks of a
try statement (§15.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
}
C# LANGUAGE SPECIFICATION
108
finally {
// neither i nor j definitely assigned
j = 5;
// j definitely assigned
}
// i and j definitely assigned
LABEL:;
// j definitely assigned
}
}
end example]