Главная » Просмотр файлов » В.В. Кулямин - Технологии программирования. Компонентный подход

В.В. Кулямин - Технологии программирования. Компонентный подход (1134162), страница 48

Файл №1134162 В.В. Кулямин - Технологии программирования. Компонентный подход (В.В. Кулямин - Технологии программирования. Компонентный подход) 48 страницаВ.В. Кулямин - Технологии программирования. Компонентный подход (1134162) страница 482019-05-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 48)

Каждый объект-исключение содержит ссылку на другоеисключение, непосредственно вызвавшее это. Если данное исключение не вызваноникаким другим, эта ссылка равна null.В Java эту ссылку можно получить с помощью метода Throwable getCause(), а в C# —с помощью свойства System.Exception.InnerException.o Для описания ситуации, в которой возникло исключение, используется состояние стекаисполнения программы — список методов, которые вызывали друг друга перед этим, иуказание на место в коде каждого такого метода. Это место обозначает место вызоваследующего метода по стеку или, если это самый последний метод, то место, где ивозникло исключение. Обычно указывается номер строки, но иногда он недоступен,если соответствующий метод присутствует в системе только в скомпилированном видеили является внешним для Java машины.Информация о состоянии стека на момент возникновения исключения, как и егосообщение, автоматически выводится в поток сообщений об ошибках, если этоисключение остается необработанным в программе.В Java состояние стека для данного исключения можно получить с помощью методаStackTraceElement[] getStackTrace(), возвращающего массив элементов стека.Каждый такой элемент несет информацию о файле (String getFileName()), классе(String getClassName()) и методе (String getMathodName()), а также о номере строки(int getLineNumber()).В C# можно сразу получить полное описание состояния стека в виде одной строки спомощью свойства string StackTrace.Блок обработки исключительных ситуаций выглядит так.try{ statements } Agcatch ( type_1 e_1 ) { statements_1 } Ag… Agcatch ( type_n e_n ) { statements_n } Agfinally{ statements_f } AgЕсли во время выполнения одной из инструкций в блоке, следующем за try, возникаетисключение, управление передается на первый блок catch, обрабатывающий исключениятакого же или более широкого типа.

Если подходящих блоков catch нет, выполняется блокfinally и исключение выбрасывается дальше.Блок finally выполняется всегда — сразу после блока try, если исключения не возникло,или сразу после обрабатывавшего исключение блока catch, даже если он выбросил новоеисключение.В этой конструкции могут отсутствовать блоки catch или блок finally, но не то и другоеодновременно. В C# разрешается опускать имя объекта-исключения в catch, если он неиспользуется при обработке соответствующей исключительной ситуации.159using System;public class A{public static void main(String[] args){try {if(args.length > 0)System.out.println("Some arguments are specified");else throw newIllegalArgumentException("No arguments specified");}catch(RuntimeException e){System.out.println("Exception caught");System.out.println("Exception type is " +e.getClass().getName());System.out.println("Exception message is \"" +e.getMessage() + "\"");}finally{System.out.println("Performing finalization");}}}public class A{public static void Main(string[] args){try {if(args.Length > 0)Console.WriteLine("Some arguments are specified");else throw newArgumentException("No arguments specified");}catch(Exception e){Console.WriteLine("Exception caught");Console.WriteLine("Exception type is " +e.GetType().FullName);Console.WriteLine("Exception message is \"" +e.Message + "\"");}finally{Console.WriteLine("Performing finalization");}}}В Java, начиная с версии 1.4, появиласьинструкция assert, предназначенная длявыдачи отладочных сообщений.Эта инструкция имеет один из двух видов:assert expression ;assert expression : expression_s ;Выражение expression должно иметьлогический тип, а выражение expression_s —произвольный.Проверка таких утверждений может бытьвыключена.

Тогда эта инструкция ничего неделает, и значения входящих в нее выраженийне вычисляются.Если проверка утверждений включена, товычисляется значение expression. Если оноравно true, управление переходит дальше,иначе в обоих случаях выбрасываетсяисключение java.lang.AssertionError.Во втором случае еще до выброса исключениявычисляется значение выраженияexpression_s, оно преобразуется в строку изаписывается в качестве сообщения всоздаваемое исключение.В C# имеется возможность использоватьинструкцию goto.

Эта инструкция передает160управления на инструкцию, помеченнуюметкой, которая следует за goto.Как мы уже видели, помимо обычных меток, вgoto могут использоваться метки case вместесо значениями и метка default. В этих случаяхинструкция goto должна находиться внутриблока switch, в котором имеются эти метки.При выходе с помощью goto из блока try илиблока catch, у которых имеетсясоответствующий блок finally, сначалавыполняется содержимое этого блока finally.Ключевые слова checked и unchecked в C#могут помечать блок, определяя тем самымконтекст вычислений в рамках этого блока (см.раздел о целочисленных типах).Инструкция using может быть использована вC#, чтобы выполнить действия, требующиезахвата каких-либо ресурсов, безнеобходимости заботиться потом об ихосвобождении.Эта инструкция имеет видusing ( expression ) statement илиusing ( declaration ) statementгде declaration — это декларация одной илинескольких переменных.Первый вид этой инструкции сводится ковторому — если тип используемого выраженияT, и имя v нигде не используется, то онэквивалентенusing ( T v = expression ) statementЭта конструкция, в свою очередь, эквивалентнаследующей.{T v = expression;try { statement }finally { disposal }}Здесь disposal представляет вызов методаDispose(), который должен быть у типа T, свозможной предварительной проверкой того,что переменная v не равна null, и приведениемее к типу System.IDisposable, если T являетсяего подтипом.В версии 2.0 в C# введены две инструкцииyield, предназначенные для более удобногопостроения итераторов.Блок, содержащий инструкцию yield,называется итерационным (iterator block) иможет быть телом метода, оператора илиметода доступа к свойству и не должен быть161блоком finally, catch или блоком try, укоторого есть соответствующие catch-блоки.Этот блок порождает последовательностьзначений одного типа.

Сам метод или оператордолжен возвращать объект одного из четырехтипов:System.Collections.IEnumerable,System.Collections.IEnumerator,System.Collections.Generic.IEnumerable<T>,System.Collections.Generic.IEnumerator<T>.В первых двух случаях порождаются объектытипа object, во вторых двух — значения типа T.Для возвращения одного из этойпоследовательности значений используетсяинструкция yield return expression;Выражение в ней должно иметьсоответствующий тип, object или T.Для указания на то, что порождаемаяитерационным блоком последовательностьзначений завершилась, используетсяинструкция yield break;Пример реализации итератора коллекции сиспользованием yield приведен ниже.using System;public class MyArrayList<T>{T[] items = new T[10];int size = 0;public int Count{ get { return size; } }public T this[int i]{get{if(i < 0 || i >= size) throw newIndexOutOfRangeException();else return items[i];}set{if(i < 0 || i > size) throw newIndexOutOfRangeException();else if (i == size){T[] newItems =new T[size + 10];Array.Copy(items, newItems, size++);}items[i] = value;}}162}public IEnumerator<T> GetEnumerator(){for(int i = 0; i < size; i++)yield return items[i];}public class A{public static void Main(){MyArrayList<string> l =new MyArrayList<string>();l[0] = "First";l[1] = "Second";l[2] = "Third";}}foreach (string s in l)Console.WriteLine(s);Инструкции обоих языков, предназначенные для синхронизации работы нескольких потоков,рассматриваются в следующей лекции, в разделе, посвященном разработке многопоточныхпрограмм.Пользовательские типыВ обоих рассматриваемых языках имеются ссылочные типы и типы значений.

Объектыссылочных типов имеют собственную идентичность, а значения такой идентичности не имеют.Объекты ссылочных типов можно сравнивать на совпадение или несовпадение при помощиоператоров == и !=. В C# эти операторы могут быть перегружены, поэтому, чтобы сравнитьобъекты на идентичность, лучше привести их сначала к типу object.В обоих языках можно создавать пользовательские ссылочные типы, определяя классы иинтерфейсы. Кроме того, можно использовать массивы значений некоторого типа. В C# можноопределять пользовательские типы значений, а в Java типами значений являются толькопримитивные.Класс представляет собой ссылочный тип, объекты которого могут иметь сложную структуруи могут быть задействованы в некотором наборе операций.

Характеристики

Тип файла
PDF-файл
Размер
3,61 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6384
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее