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

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 80

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

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

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

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

Если требуется перехватывать исключения базового и производного классов, то первым по порядку должен следовать оператор сатсЬ, перехватывающий исключение производного класса. Это правило необходимо соблюдать потому, что при перехвате исключения базового класса будут также перехвачены исключения всех производных от него классов. Правда, это правило соблюдается автоматически: если первым расположить в коде оператор сассЬ, перехватывающий исключение базового класса, то во время компиляции этого кода будет выдано сообщение об ошибке. В приведенном ниже примере программы создаются два класса исключений: ЕхсертА и ЕхсертВ. Класс Ехсертй является производным от класса Ехсерт1оп, а класс Ехсерт — производным от класса Ексерсй. Затем в программе генерируются исключения каждого типа.

Ради краткости в классах специальных исключений предоставляется только один конструктор, принимающий символьную строку, описывающую исключение. Но при разработке программ коммерческого назначения в классах специальных исключений обычно требуется предоставлять все четыре конструктора, определяемых в классе Ехсерсэоп. !! Исключения производных классов должны появляться до !! исключений базового класса. сатпд Зуатею; Создать класс исключения. с1азз Ехсерть : Ехсерт1оп ( роЬ1тс ехсертА(вттгпс зтт) : Ьаве(атт) ( ) Глава 13. Обработка исключительных ситуаций 427 рпЬ11с очеггсг)е ягг1пэ Тозггспо() ( гегигп Меяяаое; ) Уl Создать класс исхлючения, производный от класса ЕхсерСА.

с1аяя ЕхсерСВ : Ехсергл ( рпЬ11с Ехсергв(ягг1по ягг) : Ьазе(агг) ( ) роЬ11с очегг1ое ягглпо Тозгглпд() ( гегигп Меяяаое; ) ) с1аяя ОгоегнаССегя ягаС1с чо1с) Ма1п() ( бог(1пс х = 0; х < 3; хт+) ( сгу ( 11(я==о) Сьгон пен Ехсергл("Перехват исключения типа ЕхсерСА") е1яе гт(х==1) олсон пен ЕхсерСВ("Перехват исключения типа ЕхсерСВ"); е1яе СЬгон пен ЕхсерС1оп(); ) сагсЬ (ЕхсерСВ ехс) ( Сопяо1е.нглгеЬ1пе(ехс); ) сагсл (Ехсергл ехс) ( Сопяо1е.иг1Сеэвпе(ехс); ) саСсЬ (Ехсергтоп ехс) ( Сопяо1е.

Иг1гевспе (ах с); ) ) ) ) Вот к какому результату приводит выполнение этой программы. Перехват исключения типа ЕхсерСА. Перехват исключения типа ЕхсерСВ. Буягею.Ехсерггоп: Выдано исключение типа "Яуягею.Ехсерггоп". я Огдегнаггегя.налп() я <имя файла>:строка Зб Обратите внимание на порядок следования операторов саСсЬ. Именно в таком порядке они и должны выполняться.

Класс ехсерсВ является производным от класса ЕхсерСА, поэтому исклн)чение типа ЕхсерСВ должно перехватываться до исключения типа ЕхсерСА. Аналогично, исключение типа ЕхсерС1оп (т.е. базового класса для всех исключений) должно перехватываться последним. Для того чтобы убедиться в этом, измените порядок следования операторов саСсЬ. В итоге это приведет к ошибке во время компиляции.

Полезным примером использования оператора саСсЬ, перехватывающего исключения базового класса, служит перехват всей категории исключений. Допустим, что создается ряд исключений для управления некоторым устройством. Если сделать их классы производными от общего базового класса, то в тех приложениях, где необязательно выяснять конкретную причину возникшей ошибки, достаточно перехватывать исключение базового класса и тем самым исключить ненужное дублирование кода.

428 Часть!. Язык С() Применение ключевых слов спес)сей и ипсЬес)сес В С() имеется специальное средство, связанное с генерированием исключений, возникающих при переполнении в арифметических вычислениях. Как вам должно быть уже известно, результаты некоторых видов арифметических вычислений могут превышать диапазон представления чисел для типа данных, используемого в вычислении. В этом случае происходит так называемое переполнение. Рассмотрим в качестве примера следующий фрагмент кода. Ьусе а, Ь, гевн1Ю а = 127; Ь = 127," гево11 = (Ьусе) (а * Ь) В этом коде произведение значений переменных а и Ь превышает диапазон представления чисел для типа Ьусе.

Следовательно, результат вычисления данного выражения приводит к переполнению для типа данных, сохраняемого в переменнои гевп1Ь. В С(( допускается указывать, будет ли в коде сгенерировано исключение при переполнении, с помощью ключевых слов сЬес)сед и ппсЬесхед. Так, если требуется указать, что выражение будет проверяться на переполнение, следует использовать ключевое слово сЬес)(ед, а если требуется проигнорировать переполнение — ключевое слово ппсЬесхед. В последнем случае результат усекается, чтобы не выйти за пределы диапазона представления чисел для целевого типа выражения.

У ключевого слова сьескед имеются две общие формы. В одной форме проверяется конкретное выражение, и поэтому она называется операп(орной. А в другой форме проверяется блок операторов, и поэтому она называется блатной. Ниже приведены обе формы: спесхед (вьравеяие) спескед ( !/ проверяемые операторы ) где выражение обозначает проверяемое выражение. Если вычисление проверяемого выражения приводит к переполнению, то генерируется исключение Отег()оыехсерсйоп. У ключевого слова ппсЬесхед также имеются две общие формы.

В первой, операторной форме переполнение игнорируется при вычислении конкретного выражения. А во второй, блочной форме оно игнорируется при выполнении блока операторов: ипспесхед (выражение) опспесхед ( операторы, вля которых переполнение игноРиРуется ) где выражение обозначает конкретное выражение, при вычислении которого переполнение игнорируется. Если же в непроверяемом выражении происходит переполнение, то результат его вычисления усекается. Глава 13.

Обработка исекочительных ситуаций 429 Ниже приведен пример программы, в котором демонстрируется применение ключевых слов сйес)сед и цпспес)гед. О Продемонстрировать применение ключевых слов слескед и цпсьескед. ця1пд Яувсепп с1аяя Слескедоеюо ( ясастс чогд Маго() ( Ьуге а, Ь; Ьусе геяц1Г; а = 1271 Ь = 127; ггу ( геяц1Г = цпслесьед((ЬУГе)(а * Ь)); Сопяо1е.нгьтетйпе("Непроверенный на переполнение результат: геяц1Г) ) геяц1Г = слескед((Ьуге)(а * Ь))г О зта операция приводит к исключительной ситуации Сопяо1е.нг1се11пе("Проверенный на переполнение результат: геяц1с); // не подлежит выполнению ) сассь (Очегт1онЕхсерсьоп ехс) ( сопяо1е.иг1геььпе(ехс); ) ) ) При выполнении этой программы получается следующий результат.

Непроверенный на переполнение результат: 1 Буясеп.бчегт1онЕхсерс1оп: Переполнение в результате выполнения арифметической операции. в Слесхедбето.маьп() в <имя файла>:строка 20 Как видите, результат вычисления непроверяемого выражения был усечен. А вычисление проверяемого выражения привело к исключительной ситуации. В представленном выше примере программы было продемонстрировано применение ключевых слов спес)гед и цпсйес)гед в одном выражении. А в следующем примере программы показывается, каким образом проверяется и не проверяется на переполнение целый блок операторов. Ф // Продемонстрировать применение ключевых слов сьескед // и цпслескед в блоке операторов. цялпо Яуясею; с1аяя СлескедВ1осья ( ясасгс чоюд Ма1п () ( Ьуге а, Ь; Ьусе геяц1гг а = 127; Ь = 127; 430 Часть (.

Язык С() ггу ( цпсьесхеп ( а = 127; Ь = 127( геяц1Г = цпсьескег(((Ьусе)(а * Ь)); Сопяо1е.нгтсе11пе("Непроверенный на переполнение результат: геяц1г) г а = 125; Ь=5; геяц1Г = ипсьескео ((Ьусе) (а * Ь) ) ) Сопяо1е.иг1се11пе("Непроверенный на переполнение результат." геяц1г)т а = 127( Ъ = 127; геяц11 = сьесхег(( Сопяо1е.нггсещпе ) ) сассь (ОчегГ1онЕхсерсгоп ехс) ( Сопяо1е.игьсеЬтпе(ехс)г ) Результат выполнения этой программы приведен ниже. Непроверенный на переполнение результат: 1 Непроверенный на переполнение результат: 113 Проверенный на переполнение результат: 14 Буясею.очегГ1онЕхсерстоп: Переполнение в результате выпопнения арифметической операции.

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

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

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

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