try catch blocks create a new scope
i don't think that they should
for example, to add error handling to this statement:
int x = 1;
you have to rewrite it as a seperate declaration and assignment:
int x;
try {
x = 1;
} catch {}
maybe if try catch used different braces to show new scope is not
necessary:
try [
//new scope not needed here
int x = 1;
] catch (Exception exc) {
//new scope needed here
}
this would allow error handling to be non-destructively added and
removed from code
plus it should be possible in C# to do this
int x = 1;
{
int y = 1;
}
ie: have a scope for no other purpose than having a scope
rather than
do {
//create new scope for scopes sake
} while (false)