Как обрабатывается область видимости в исключениях - PullRequest
2 голосов
/ 13 сентября 2010

Как определяется область видимости переменных во время исключений? Я предполагаю, что это будет зависеть от языка, и ответы на любой конкретный язык очень ценятся По крайней мере, может быть, большие? C++, python, Java. Вот что я имею в виду:

питон


        try:
            for k, v in map.iteritems():
                cnf.conf.set( section, k, v )
            for i, j in map2.iteritems():
                dosomethingelse()
                for m in range(10):
                    morestuff()
        except SpecificError:
            vars = (k, v, i, j, m)
        finally:
            vars in scope #?

Или что-то более сложное, например, вложенные блоки:


    try:
        try:
            for k, v in map.iteritems():
                cnf.conf.set( section, k, v )
            for i, j in map2.iteritems():
                dosomethingelse()
                for m in range(10):
                    morestuff()
        except SpecificError:
            vars = (k, v, i, j, m)
    except:
        vars in scope #?

1 Ответ

1 голос
/ 13 сентября 2010

В Java, я полагаю, вы можете не сделать следующее:

try {
 String s = "Hello, finally!";
 ...
}
finally {
 System.out.println(s);
}

Вместо этого вы должны сделать:

String s = null;

try {
 s = "Hello, finally!";
 ...
}
finally {
 System.out.println(s);
}

Другими словами, область действия переменной ограничена блоком, в котором она определена.

НТН

...