Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie ответы.docx
Скачиваний:
10
Добавлен:
26.04.2019
Размер:
260.09 Кб
Скачать

41. Оператор throw. Класс Exception. Примеры использования.

Для генерации исключения используется оператор throw с параметром, определяющим вид исключения. Параметр должен быть объектом, порожденным от стандартного класса System.Ехсерtion. Этот объект используется для передачи информации об исключении его обработчику.

Оператор throw употребляется либо с параметром, либо без него:

throw [ выражение ];

Форма без параметра применяется только внутри блока саtch для повторной генерации исключения. Тип выражения, стоящего после throw, определяет тип исключения, например:

throw new DividеВуZегоЕхсерtion( ) ;

Здесь после слова throw записано выражение, создающее объект стандартного класса «ошибка при делении на 0» с помощью операции new. При генерации исключения выполнение текущего блока прекращается и происходит поиск соответствующего обработчика с передачей ему управления. Обработчик считается найденным, если тип объекта, указанного после throw, либо тот же, что задан в параметре саtch, либо является производным от него.

Рассмотрим пример, в котором использован оператор throw для генерации программой исклячения DivideByZeroException.

Класс Ехсерtion содержит несколько полезных свойств (табл. 10.2), с помощью которых можно получить информацию об исключении.

Таблица 10.2 Свойства класса System.Exception

Свойство

Описание

НеlpLink

URL файла справки с описанием ошибки

Меssage

Текстовое описание ошибки. Устанавливается при создании объекта. Свойство доступно только для чтения

Source

Имя объекта или приложения, которое сгенерировало ошибку

StackTrace

Последовательность вызовов, которые привели к возникновению ошибки. Свойство доступно только для чтения

InnerException

Содержит ссылку на исключение, послужившее причиной генерации текущего исключения

TargetSite

Метод, выбросивший исключение

48. Массивы. Одномерные массивы. Примеры использования.

Массив - это последовательность элементов одинакового типа, обращение к которым происходит с использованием общего для всех имени. Каждый элемент массива имеет свой порядковый номер (индекс) в последовательности: известно какая величина является в ней первой, какая второй и т.д., и в этом плане массив является упорядоченной последовательностью.

Создание массива начинается с выделения памяти под его элементы. Элементами массива могут быть величины как значимых, так и ссылочных типов (в том числе массивы).

Массив значимых типов хранит значения, массив ссылочных типов — ссылки на элементы. Всем элементам при создании массива присваиваются значения по умолчанию: нули для значимых типов и null — для ссылочных.

Одномерные массивы

Одномерный массив - это такой массив, для идентификации которого требуется указать значение только одного индекса.

Для объявления одномерного массива используется следующая форма записи:

тип[] имя_массива = new тип [размер];

Формат инициализации одномерного массива имеет следующий вид:

тип[] имя_массива = [val1, val2,…, valN];

Здесь начальные значения, присваиваемые элементам массива, задаются с помощью последовательности val1-valN. Для получения доступа к элементу одномерного массива требуется указать индекс нужного элемента:

имя_массива[индекс] = val;

Существует несколько вариантов описания массива:

тип[ ] имя;

тип[] имя = new тип [ размерность ];

тип[] имя = { список_инициализаторов };

тип[] имя = new тип [] { список_инициализаторов };

тип[] имя = new тип [ размерность ] { список_ииициализаторов };

Примеры описаний (один пример для каждого варианта описания):

int[ ] а; / / 1 элементов нет

int[ ] b = new int[4]; / / 2 элементы равны 0

int[ ] с = { 61, 2, 5, -9 }; / / 3 new подразумевается

int[ ] d = new int[ ] { 61, 2, 5, -9 }; / / 4 размерность вычисляется

int[ ] е = new int[4] { 61, 2, 5, -9 }; / / 5 избыточное описание

Здесь описано пять массивов. Отличие первого оператора от остальных состоит в том, что в нем, фактически, описана только ссылка на массив, а память под элементы массива не выделена. Если список инициализации не задан, размерность может быть не только константой, но и выражением типа, приводимого к целому,

В каждом из остальных массивов по четыре элемента целого типа. Как видно из операторов 3-5, массив при описании можно инициализировать. Если при этом не задана размерность (оператор 4), количество элементов вычисляется по количеству инициализирующих значений. Для полей объектов и локальных переменных можно опускать операцию new, она будет выполнена по умолчанию (оператор 3). Если присутствует и размерность, и список инициализаторов, размерность должна быть константой (оператор 5).

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

Рассмотрим несколько часто встречающихся на практике задач обработки одномерных массивов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]