« first day (2 days earlier)  last day (14 days later) » 

10:31
"We then can simulate the OP's scheme by moving all declarations outside the try block." Sorry, you lost me here. Are you saying this is something the compiler could do automatically, to support the OP's suggestion?
 
5 hours later…
15:31
If so, then I think you're right, the compiler could massage your code in an unambiguous way into something correct. But the same is true of, say, writing a = 1 before ever declaring a. C# is deliberately strict about that sort of thing, and my answer was talking about the logical rules of variable declaration as understood by a human.
Whether or not the compiler internally moved declarations about, to a person reading the source code, they'd see something being declared twice (or not at all) in certain code paths.
If you think it's worth editing the answer to make that clearer, let me know

« first day (2 days earlier)  last day (14 days later) »