Студопедия — Continue
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Continue






Оператор continue начинает новую итерацию ближайшего объемлющего оператора while, do, for или foreach.

оператор_continue:
continue;

Целью оператора continue является конечная точка внедренного оператора в составе ближайшего объемлющего оператора while, do, for или foreach. Если оператор continue не содержится ни в каком операторе while, do, for или foreach, возникает ошибка времени компиляции.

Если несколько операторов while, do, for или foreach вложены друг в друга, оператор continue применяется только к самому внутреннему из них. Для передачи управления с переходом через несколько уровней вложенности следует использовать оператор goto (§8.9.3).

Оператор continue не дает возможности выйти из блока finally (§8.10). Если оператор continue встречается внутри блока finally, цель оператора continue должна находиться в том же блоке finally, в противном случае возникнет ошибка времени компиляции.

Оператор continue выполняется следующим образом.

· Если оператор continue производит выход из одного или нескольких блоков try, с которыми связаны соответствующие блоки finally, управление вначале передается в блок finally самого внутреннего оператора try. Если управление достигает конечной точки блока finally, после этого управление передается в блок finally следующего объемлющего оператора try. Этот процесс повторяется до тех пор, пока не будут выполнены все блоки finally всех сопутствующих операторов try.

· Управление передается цели оператора continue.

Поскольку оператор continue осуществляет безусловную передачу управления в другое место, конечная точка оператора continue никогда не будет достижима.

Goto

Оператор goto передает управление оператору, обозначенному меткой.

оператор_goto:
goto идентификатор;
goto case константное_выражение;
goto default;

Целью оператора goto идентификатор является помеченный оператор с данной меткой. Если метка с указанным именем не существует в текущей функции-члене или если оператор goto не находится в области видимости метки, возникает ошибка времени компиляции. Это правило позволяет использовать оператор goto для передачи управления за пределы вложенной области видимости, но не внутрь вложенной области видимости. В этом примере

using System;

class Test
{
static void Main(string[] args) {
string[,] table = {
{"Red", "Blue", "Green"},
{"Monday", "Wednesday", "Friday"}
};

foreach (string str in args) {
int row, colm;
for (row = 0; row <= 1; ++row)
for (colm = 0; colm <= 2; ++colm)
if (str == table[row,colm])
goto done;

Console.WriteLine("{0} not found", str);
continue;
done:
Console.WriteLine("Found {0} at [{1}][{2}]", str, row, colm);
}
}
}

оператор goto служит для передачи управления из вложенной области видимости.

Целью оператора goto case является список операторов в непосредственно объемлющем операторе switch (§8.7.2), который содержит метку case с данным константным значением. Если оператор goto case не содержится ни в одном операторе switch, или если константное_выражение не допускает неявное преобразование (§6.1) в определяющий тип ближайшего объемлющего оператора switch, или если ближайший объемлющий оператор switch не содержит метку case с данным константным значением, возникает ошибка времени компиляции.

Целью оператора goto default является список операторов в непосредственно объемлющем операторе switch (§8.7.2), содержащем метку default. Если оператор goto default не содержится ни в одном операторе switch, или если ближайший объемлющий оператор switch не содержит метку default, возникает ошибка времени компиляции.

Оператор goto не дает возможности выйти из блока finally (§8.10). Если оператор goto встречается внутри блока finally, цель оператора goto должна находиться в том же блоке finally, в противном случае возникнет ошибка времени компиляции.

Оператор goto выполняется следующим образом.

· Если оператор goto производит выход из одного или нескольких блоков try, с которыми связаны соответствующие блоки finally, управление вначале передается в блок finally самого внутреннего оператора try. Если управление достигает конечной точки блока finally, после этого управление передается в блок finally следующего объемлющего оператора try. Этот процесс повторяется до тех пор, пока не будут выполнены все блоки finally всех сопутствующих операторов try.

· Управление передается цели оператора goto.

Поскольку оператор goto осуществляет безусловную передачу управления в другое место, конечная точка оператора goto никогда не будет достижима.

Return

Оператор return возвращает управление в программу, вызвавшую функцию-член, в которой используется оператор return.

оператор_return:
return выражениенеобязательно;

Оператор return без выражения может использоваться только в функции-члене, не вычисляющей значение, т. е. в методе с типом возвращаемого значения void, методе доступа set для свойства или индексатора, в методах доступа add и remove для события, в конструкторе экземпляров, статическом конструкторе или деструкторе.

Оператор return с выражением может использоваться только в функции-члене, вычисляющей значение, т. е. в методе с типом возвращаемого значения, отличным от void, в методе доступа get для свойства или индексатора или в операторе, определенном пользователем. Должно существовать неявное преобразование (§6.1) типа выражения в тип возвращаемого значения функции-члена, содержащей оператор.

Включение оператора return в блок finally (§8.10) вызывает ошибку времени компиляции.

Оператор return выполняется следующим образом.

· Если оператор return сопровождается выражением, это выражение вычисляется, и результат неявным способом преобразуется в тип возвращаемого значения члена-функции, содержащей оператор. Результат преобразования становится значением, возвращаемым в вызывающую программу.

· Если оператор return входит в один или несколько блоков try, с которыми связаны соответствующие блоки finally, управление вначале передается в блок finally самого внутреннего оператора try. Если управление достигает конечной точки блока finally, после этого управление передается в блок finally следующего объемлющего оператора try. Этот процесс повторяется до тех пор, пока не будут выполнены все блоки finally всех объемлющих операторов try.

· Управление возвращается в вызывающую программу функции-члена, содержащей оператор.

Поскольку оператор return осуществляет безусловную передачу управления в другое место, конечная точка оператора return никогда не будет достижима.

Throw

Оператор throw генерирует исключение.

оператор_throw:
throw выражениенеобязательно;

Оператор throw с выражением генерирует значение, получаемое в результате вычисления выражения. Выражение должно представлять значение с типом класса System.Exception, или с типом класса, производным от System.Exception, или с типом параметра типа, чьим эффективным базовым классом является System.Exception (или его подкласс). Если результатом вычисления выражения является null, вместо этого генерируется исключение System.NullReferenceException.

Оператор throw без выражения может использоваться только в блоке catch; в этом случае оператор повторно генерирует исключение, уже обрабатываемое этим блоком catch.

Поскольку оператор throw осуществляет безусловную передачу управления в другое место, конечная точка оператора throw никогда не будет достижима.

При генерации исключения управление передается первому предложению catch в объемлющем операторе try, который может обработать исключение. Процесс, протекающий с момента генерации исключения до передачи управления в подходящий обработчик исключений, называется распространением исключения;. Распространение исключения сводится к повторению нижеописанных шагов до обнаружения предложения catch, соответствующего данному исключению. В последующем описании точкой генерации; первоначально считается место генерации исключения.

· В текущей функции-члене проверяется каждый оператор try, включающий точку генерации. Для каждого оператора S, начиная с самого внутреннего оператора try и до самого внешнего оператора try, выполняются следующие шаги.

o Если блок try оператора S содержит точку генерации и оператор S содержит одно или несколько предложений catch, эти предложения catch проверяются в порядке их следования в поисках подходящего обработчика для данного исключения. Первое предложение catch, в котором указан тип исключения или базовый тип для типа исключения, считается подходящим вариантом. Предложение catch общего вида (§8.10) считается подходящим для любого типа исключения. Если подходящее предложение catch найдено, распространение исключения завершается передачей управления в блок с этим предложением catch.

o В противном случае, если блок try или блок catch оператора S содержит точку генерации и в операторе S имеется блок finally, управление передается в блок finally. Если блок finally генерирует еще одно исключение, обработка текущего исключения прекращается. В противном случае, когда управление достигает конечной точки блока finally, обработка текущего исключения продолжается.

· Если обработчик исключений не удается найти в ходе текущего вызова функции-члена, этот вызов прекращается. Затем вышеописанные шаги повторяются для программы, вызвавшей функцию-член, но точкой генерации считается оператор, из которого была вызвана функция-член.

· Если обработка исключения приводит к прекращению всех вызовов функций-членов в текущем потоке, свидетельствуя о том, что в этом потоке нет обработчика для исключения, то и сам поток прекращается. Влияние такого завершения определяется реализацией.

Try

Оператор try предлагает механизм перехвата исключений, происходящих в ходе выполнения блока. Кроме того, оператор try дает возможность определить блок кода, который должен всегда выполняться при передаче управления за пределы оператора try.

оператор_try:
try блок предложения_catch
try блок предложение_finally
try блок предложения_catch предложение_ finally

предложения_catch:
конкретные_предложения_catch общее_предложение_catchнеобязательно
конкретные_предложения_catchнеобязательно общее_предложение_catch

конкретные_предложения_catch:
конкретное_предложение_catch
конкретные_предложения_catch конкретное_предложение_catch

конкретное_предложение_catch:
catch (тип_класса идентификаторнеобязательно) блок

общее_предложение_catch:
catch блок

предложение_finally:
finally блок

Существует три вида операторов try:

· блок try, за которым следует один или несколько блоков catch;

· блок try, за которым следует блок finally;

· блок try, за которым следует один или несколько блоков catch и затем блок finally.

Если в предложении catch указывается тип_класса, это должен быть тип System.Exception, производный тип от System.Exception или тип параметра типа, чей эффективный базовый класс — System.Exception (или его подкласс).

Когда в предложении catch указывается и тип_класса, и идентификатор, тем самым объявляется переменная исключения с данным именем и типом. Переменная исключения соответствует локальной переменной с областью видимости, охватывающей блок catch. В ходе выполнения блока catch переменная исключения представляет обрабатываемое при этом исключение. Для контроля определенного присваивания считается, что в пределах всей области видимости переменной исключения для нее обеспечено определенное присваивание.

Доступ к объекту исключения в блоке catch невозможен, если имя переменной исключения не включено в предложение catch.

Предложение catch, в котором не указан ни тип исключения, ни имя переменной исключения, называется общим предложением catch. Оператор try может содержать только одно общее предложение catch, и если оно имеется, оно должно быть последним предложением catch.

В некоторых языках программирования поддерживаются исключения, которые не могут быть представлены объектами, производными от System.Exception, хотя такие исключения не генерируются кодом C#. Общее предложение catch позволяет перехватывать подобные исключения. Таким образом, общее предложение catch семантически отличается от предложения с указанным типом System.Exception тем, что первое может также перехватывать исключения в программах на других языках.

В поисках обработчика для исключения производится анализ предложений catch в лексикографическом порядке. Если в предложении catch указан &







Дата добавления: 2015-09-07; просмотров: 479. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

Основные симптомы при заболеваниях органов кровообращения При болезнях органов кровообращения больные могут предъявлять различные жалобы: боли в области сердца и за грудиной, одышка, сердцебиение, перебои в сердце, удушье, отеки, цианоз головная боль, увеличение печени, слабость...

Вопрос 1. Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации К коллективным средствам защиты относятся: вентиляция, отопление, освещение, защита от шума и вибрации...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия