Главная » Просмотр файлов » Г. Шилдт - С# 3.0 Полное руководство. 2010

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 76

Файл №1160798 Г. Шилдт - С# 3.0 Полное руководство. 2010 (Г. Шилдт - С# 3.0 Полное руководство. 2010) 76 страницаГ. Шилдт - С# 3.0 Полное руководство. 2010 (1160798) страница 762019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Подходящий элемент не найден. Как следует из приведенного выше результата, каждый оператор сагсп реагирует только на свой тип исключения. Вообще говоря, операторы сагой выполняются по порядку их следования в программе. Но выполняется только один блок сассп, в котором тип исключения совпадает с типом генерируемого исключения. А все остальные блоки саср)т пропускаются. 398 Часть ). Язык С№ Перехват всех исключений Время от времени возникает потребность в перехвате всех исключений независимо от их типа. Для этой цели служит оператор сассв, в котором тип и переменная исключения ие указываются. Ниже приведена общая форма такого оператора. саксо ( // обработка исключений ) С помощью такой формы создается "универсальный" обработчик всех исключений, перехватываемых в программе.

Ниже приведен пример такого "универсального" обработчика исключений. Обратите внимание иа то, что ои перехватьваег и обрабатывает оба исключения, тпбехспсоЕиапдеехсерс1оп и 01У1т]еВуЕеговхсерг1оп, генерируемых в программе. // Использовать "универсальный" обработчик исключений. цзьпч эувкеют с1азэ Ехспеюо5 ( эсак1с то1б Иаьп() ( // здесь массив пцюег длиннее массива белою. ьпк[) ппюег = ( 4, 8, 16, 32, 64, 128, 256, 512 )т 1пг[) с(епою = ( 2, О, 4, 4, О, 8 )) Гог(1пс 1=0; 1 < пцюег.Ьепдтпт 1++) ( сгу ( Сопяо1е.ыгьсевьпе(ппюег(1] + " / " бепою[1] ь " равно " + ппюег[1]/белою[1])) ) саксп ( // "универсальный" перехват. Сопао1е.ыг1кетьпе( "Возникла некоторая исключительная ситуация."); ) При выполнении этой программы получается следующий результат: 4 / 2 равно 2 Возникла некоторая исключительная ситуация.

16 / 4 равно 4 32 / 4 равно 8 Возникла некоторая исключительная ситуация. 128 / 8 равно 16 Возникла некоторая исключительная ситуация. Возникла некоторая исключительная ситуация. Применяя "универсальный" перехват, следует иметь в виду, что его блок должен располагаться последним по порядку среди всех блоков пасс(т. Глава 13. Обработка исключительных ситуаций 399 Ня заметку! В подавляющем большинстве случаев "универсальный" обработчик исключений не применяется. Как правило, исключения, которые могут бьапь сгенерированы в коде, обрабатываются по отдельности.

Неправильное использование "универсального" обработчи ха может привестли к тому, что ошибки, перехватывавшиеся при тестировании программы, маскируются. Кроме того, организовать надлежащую обработку всех исключительных ситуаций в одном обработчике не так-то просто. Оными словами, "универсальный" обработчик исклнтчений можетл оказаться пригодным лишь в особых случаях, например в инструментальном средстве анализа кода во время выполнения. Вложение блоков ~гу Один блок сгу может быть вложен в другой. Исключение, генерируемое во внутреннем блоке сгу и не перехваченное в соответствующем блоке сато)т, передается во внешний блок сгу.

В качестве примера ниже приведена программа, в которой исключение 1пбехбпСОЙПапденхсерт1оп перехватывается не во внутреннем, а во внешнем блоке агу. // Использовать вложенный блок лгу. пзапч Яузсели с1азз Незктгуз ( зкакус чо1б Маги() ( // Здесь массив ппвег длиннее массива белов. 1пк[] ппвег = ( 4, 8, 16, 32, 64, 128, 256, 512 ); тлю [] бетюв = ( 2, О, 4, 4, О, 8 )т лгу ( О внешний блок лгу тог(1пг к=от г < повес.Беловат 1++) ( лгу ( // вложенный блок Ггу Сопзо1е.нг1ке11пе(ппвег[1] + " / " + депеш[1] + " равно " + пшлег [1] /белов [1] ); пасси (01ч1бевуаегоехсерс1оп) ( Сопзо1е.нг1кегнпе("Делить на нуль нельзя!"); ) ) сасс)т (1пбехбпкбтхапоекхсерс1оп) ( Сопзо1е.нг1се11пе("Подходящий элемент не найден.")1 Сопзо1е.нг1се11пе("Неисправимая ошибка — программа прервана.") ) ) ) Выполнение этой программы приводит к следующему результату: 4 / 2 равно 2 Делить на нуль нельзя! 16 / 4 равно 4 32 / 4 равно 8 400 часть (.

((змк Сз Делить на нуль нельзя! 128 / 8 равно 16 Подходяший элемент не найден. Неисправимая ошибка — программа прервана. В данном примере исключение, обрабатываемое во внутреннем блоке г гу и связанное с ошибкой из-за деления на нуль, не мешает дальнейшему выполнению программы. Но ошибка нарушения границ массива, обнаруживаемая во внешнем блоке сгу, приводит к прерыванию программы. Безусловно, приведенный выше пример демонстрирует далеко не единственную причину для применения вложенных блоков сгу, тем не менее из него можно сделать важный общий вывод. Вложенные блоки ггу нередко применяются для обработки различных категорий ошибок разными способами. В частности, одни ошибки считаются неисправимыми и не подлежат исправлению, а другие ошибки незначительны и могут быть обработаны немедленно. Как правило, внешний блок Ету служит для обнаружения и обработки самых серьезных ошибок, а во внутренних блоках ггу обрабатываются менее серьезные ошибки.

Кроме того, внешний блок сгу может стать "универсальным" для тех ошибок, которые не подлежат обработке во внутреннем блоке. Генерирование исключений вручную В приведенных выше примерах перехватывались исключения, генерировавшиеся исполняющей системой автоматически. Но исключение может быть сгенерировано и вручную с помощью оператора Ейгои. Ниже приведена общая форма такого генерирования. спгон ехсерсОЬ) где в качестве ехсерго(2 должен быть обозначен объект класса исключений, производного от класса Ехсерсуоп.

Ниже приведен пример программы, в которой демонстрируется применение оператоь ра Гогом для генерирования исключения Р1у1с(евузегокхсерс1оп. // Сгенерировать исключение вручную. паунд Яувгеш; с1ава тьгоноешо ( асасьс чо1Н Мауп() ( сгу ( Сопао1е.Игугеььпе("До генерирования исключения."); Гьгон пен Оьчтпевугегокхсергьоп()) ) савой (Пьн1с)евузегоЕхсерс1оп) ( Сопзо1е.игьгецвпе("Исключение перехвачено."); ) Сопзо1е.Игьгеььпе("После пары операторов Ггу/сагой.") ) ) Вот к какому результату приводит выполнение этой программы: Глава [3. Обработка исключительных ситуаций 401 До генерирования исключения.

Исключение перехвачено. После пари операторов Сгу/саСсв. Обратите внимание па то, что исключение П1у14[евузегокхсеркйоп было сгенерировано с использованием ключевого слова пен в операторе Слгсн. Не следует забывать, что в данном случае генерируется конкретный объект, а следовательно, ои должен быть создан перед геиерироваиием исключения. Это означает, что сгенерировать исключение только тю его титгу нельзя. В данном примере для создания объекта осчкевнузнгпексврс: пп был автоматически вызван конструктор, используемый по умолчанию, хотя для генерирования исключеиий доступны и другие конструкторы.

Повторное генерирование исключений Исключение, перехваченное в одном блоке сасс)т, может быть повторно сгеиерировано в другом блоке, чтобы быть перехваченным во внешнем блоке сассп. Наиболее вероятит[й причиной для повторного генерирования исключения служит предоставление доступа к исключению нескольким обработчикам. Допустим, что один обработчик оперирует каким-нибудь одним аспектом исключения, а другой обработчик — другим его аспектом. Для повторного генерирования исключения достаточно указать оператор соком без сопутствующего выражения, как в приведенной ниже форме. слгон Не следует, однако, забывать, что когда исключение генерируется повторно, то оио ие перехватывается снова тем же самым блоком сассп, а передается во внешний блок сасс) ь В приведенном ниже примере программы демонстрируется повторное генерирование исключеиия. В даииом случае генерируется исключение 1п<(ехОнСОгкапоеихсерС1оп.

// Сгенерировать исключение повторно. пяспд Яуякевт с1аяя Кеклгон ( рпп11с якаС1с тост( БепЕхсеркаоп() ( // Здесь массив ппвег длиннее массива г(апов. гпС[[ ппвег = ( 4, 8, 16, 32, 64, 128, 256, 512 )т апС() с(апов = ( 2, О, 4, 4, О, 8 ); лог(ьпс 1=04 1<ппвег.ьепдкит 1++) ( ( Сопяо1е.ИггСеьвпе(ппвег[г) + " / " 4 т(епов[1[ + " равно " + навет[1[/г(апов[с))т ) сагси (О1тгпевузегоЕхсереаоп) ( Сопяо1е.иг1Сеъспе("Делить на нуль нельзя!")т саксп (1пг(ехопгогкапдеЕхсергсоп) ( Сопяо1е.Иг1Сет апе("Подходящий зпемент не найден.")т Сигонт // сгенерировать исключение повторно ) ) 402 часть!.

язык Сз с1аэз Кепьгонпешо ( всасьс чотб ма1п 0 ( сгу ( Кеппгои.пепЕксерп1оп(); сассл(1пбехонсогаапчеексерс1оп) ( // перехватить исключение повторно Сопво1е.игтпепхпе("Неисправимая ошибка — программа прервана.") ) ) ) В этом примере программы ошибки из-за деления на нуль обрабатываются локально в методе Бепкхсерг1оп И, но ошибка выхода за границы массива генерируется повторно. В данном случае исключение 1пбехООСОТНапдекхсерг1оп обрабатывается в методе Мазп () .

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

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

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

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее