Обычно, когда говорят об "областях видимости", подразумевают, что-то про имена (в [html]<a href="https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8">википедии</a>[/html] почитайте).
Но это только всё запутывает. Потому что это не единственный сценарий использования групп команд. Другой вариант использования - приписывание к группе команд набора функций обработки различных ошибок.
И как-то отдельно и специально об этом не пишут, тайна великая сие есть.

А нужно всё это для организации вложенных try-finally, примерно так:

выполнять
{
        от забора;
        пока не обед : копать лопатой;
}
с проблемой (отсутствие лопаты)
{
        выполнять
        {
                обратиться к снабженцам за лопатой
                пока не обед : копать лопатой;
                сдать лопату снабженцам
        }
        с проблемой (отсутствие лопаты)
        {
                попомнить /* Не забыть, когда-нибудь вспомнить (обычно о плохом) */ слова снабженцев
                копать руками
        }
}
по завершению работ
{
        отчитаться о проделанной работе
}

Для меня остаётся неясным, что происходит, когда обработка исключений начинается внутри обработчика исключения.
Но тема не про это, а про то, что обособленные группы команд нужны не только для того, чтобы создавать локальные переменные.
Может быть даже переменные будут объявляться в заголовке функции, как в вашем паскале,
но при этом для структурированной обработки исключений блоки всё равно понадобятся.

Отредактировано Лис (2019-03-21 02:12:18)