Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 147

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 147 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 1472019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

13.5.3. Связывание исключительных ситуаций с обработчиками Возбуждение исключительной ситуации происходит довольно просто. Экземпляр класса исключительной ситуации является операнлом оператора г)эгон. Определим исключительную ситуацию с именем МуЕхсерг1оп следуюшим образом: о1авв МуЕхсерсдог. вхсвпав Ехсерс'оп риЪ11с МуЕхсерсьоп() ( рпЪ11о МуЕхсерГ1оп(ЯГг1па щевваде) ( вирег (желваке)г ) Эту исключительную ситуацию можно возбудить оператором КЬгон пен МуЕхсерсдоп(); Экземпляр исключительной ситуации лля оператора г)эгон создается отдельно от оператора ГЬгон, как показано ниже муехсерг1оп шуЕхсергдопОЪ)есг = пен Муехсергдоп(); Г)эгон шуЕхсерг1опОЪзессг Один из двух конструкторов, включенных в наш новый класс.

не имеет параметров, а другой имеет параметр в виде объекта типа Ягг1пд, который он передает в суперкласс (Ехсерс1оп) лля отображения. Таким образом, наша новая исключительная ситуация может быть возбуждена следуюшим образом: спгон пен МуЕхсерс1оп (" сообщение, определяющее местоположение ошибки" ) Связывание исключительных ситуаций с обработчиками в языке )ача менее сложно, чем в языке С++. Если исключительная ситуация возбудилась в составном операторе конструкции агу, она связывается с первым обработчиком (функцией оагоЬ), непосредственно следующим за оператором ггу. параметр которого принадлежит тому же классу, что и объект возбужденной исключительной ситуации, или является прелком по отношению к нему.

Если найден подходящий обработчик, оператор г)эгон связывается с иим, и этот обработчик выполняется. Глава 13. Обработка исключительных ситуаций $68 Исключительные ситуации могут быть обработаны. а затем снова возбужлены. если включить оператор кззкои без операнда в конец обработчика. Повторно возбужденная исключительная ситуация не будет обработана той же конструкцией кку, которой она первоначально была возбуждена. так что зацикливания не возникает. Это повторное возбуждение обычно осушествляется, когда следует выполнить некоторое локальное действие, а затем — дальнейшую обработку вложенным оператором кку или вызываюшим модулем. Оператор сЗзкси в обработчике также может возбудить исключительную ситуацию, отличаюш>юся от той.

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

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

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

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

Метод десС1авл можно использовать лля того. чтобы получить объект, храняший имя класса, который в свою очередь получен методом оесИаже. Таким образом, можно получить имя класса фактического параметра оператора еззкои, вызвавшего выполнение обработчика. Для приведенного выше обработчика это осушествляется следующим образом: $6Р 13.5. Обработка исключительных ситуаций в языке Зача „"епег1сОВ)ест.дес01авв().оет)чаже() Сообшснне.

связанное с объектом. являющимся параметром, которое может быть сошано в конструкторе. получено с помошью оператора П.. СГСС0Ь„'ЕСС.СЕ")ЧЕЯВадЕ() 13.5.5. Другие проектные рензение Оператор сегоня размешается в программах на языке )ача в том же месте, что и спецификация е)згон в программах на языке С++.

Однако семантика оператора е)эгона значите. ~ьио отличается от семантики оператора кЬгон в языке С++. Появление имени исключительной ситуации в операторе вагона в методе на языке )ача указывает на то, что данный класс исключительных ситуаций или любой из производных от него классов может быть возбужден этим методом. Например, если в методе ) катано. по он может возбулить исключительную ситуацию 10Ехсергъоп, это означас и чго оп может возбудить объект класса 10Ехсерс1оп или обьект любого из производныч оз 0 хсерс1оп классов, такого как ЕОГЕхсерс1оп.

Исьлн1ЧнтЕЛЬНЫЕ Ситуации из класСов Еггог и Кцпг1меЕхсерт1оп, а также произволныь от них классов называются непровереннымн исключительными ситуациянн (цпслес) ег( ехсерпопз). Все другие исключения называются проверенными исклю° ппельнымн ситуациямн (с)зес)гес( ехсерйопз). Непроверенные исключительные ситуаьци никогда не анализируются компилятором. Однако компилятор гарантирует, что все ,"1веренные исключительные ситуации, которые могут возбуждаться методом, либо пе~нслсны в операторе кагана, либо обрабатываются в методе.

Причина, по которой ассы .'- гсг и Ецп" 1жеЕхсерс1оп, а также производные от них являются непроаерс .ными. заключается в том, что их может возбудить любой метод. В операторе кпгонв, принадлежашем методу, нельзя объявить больше исключитслычзч сигуаций. чем в методе, который он замешает, хотя меньше объявить можно. Талин образом, если в некоем методе нет оператора сегоня, то его не может иметь ни один чс1од.

замешаюший ланный. Метод может возбуждать любую исключительную сиз)линю. указанную в его операторе погона, а также любую исключительную ситуацию, производную от нее. Если метод не возбуждает непосредственно конкретную исключительн) ю ситуацию, но вызывает другой метод, который мог бы возбудить зту ситуацию, данная исключительная ситуация должна быть указана в его операторе кгзгонв. По этой причине в примере, приведенном ниже, в операторе сегоня заголовка метода пц '. зп .1ет. используюшего метод геаг(Ь1пе.

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

или в модуль, вызвавший данный метод, если вложенного оператора Егу в методе нет. Глава 13. Обработка исключительных ситуаций 570 Обработчиков исключительных ситуаций по умолчанию в языке 1ача нет, и заблокировать исключительные ситуации невозможно. 13.5.6. Прнмер Ниже приводится класс на языке )ача с возможностями, которыми обладала программа на языке С++ из раздела 13.4: зароке 1ача.1о.*г // Определение исключительной ситуации, // относящейся к обнаружению конца входных данных о1авв Недагзче1присЕхсергзоп ажсаЫв Ехсергзоп ( риЬ11о Иедас1че1прцГЕхсерс1оп() ( Яувгеш.оцс.рг1пс1п("достигнут конец входных данных")> ) //* конец конструктора ) //* конец класса Хе9аг1че1прцСЕхсерс1оп с1ава бгабееззс ( Епе пенбгас(е, 1пбех, 11ш1г 1, 11ш1с 2( Епе () 1гес( = (О, О, О, О, О, О, О, О, О, О)' чоИ Ьц11б01вг() ЕЬгоив 1ОЕхсерг1оп ( // Ввод: список целых чисел, представляющих собой ранги, // за которьдчи следует отрицательное число // Вывод: распределение оценок в процентах по каждому из // диапазонов 0-9,10-19, ..., 90-100 Оаса1прцсЯГгеаш 1п = пен Оаса1прцГЯсгеаш(Яувсеш.

1п); агу ( нЬ11а (Ггце) яузгеш. оцс. ргзпс1п (" Пожалуйста, введите оценку" ); пенбгас(е = 1пседег.рагзе1пг(1п.геаббзпе() ); ЕГ (пенбгабе < 0) ЕЬгои паи ))е9аг1че1прцсЕхсергзоп(); 1пбех = пенбгас(е / 10; сгу йгег([1пбех)++г //* конец внутреннего оператора Сгу сассЬ(Аггау1пг(ехОцгОГВоцпс(вЕхсерг1оп) ( Ег (пенбгабе == 100) ангес( [9)++; а1ва Яувсеш.оцс.ргзпс1п("Ошибка - новая оценка: + пенбгабе + "выходит за пределы допустимого диапазона)г ) //* конец функции сассЬ (Аггау1пбех...

) //* конец цикла нЬ11е (Ггце) //* конец внешнего оператора Ггу сагсЬ(ие9асзче1прцсЕхсерсзоп) ( 13.5. Обработка исключительных ситуаций в языке 3ача яувгеа. оцг. ргдпг1п ("1пГраницы ЧастотыМ) ) Еог (1пс(ех = 0; дпс(ех < 10; дпс(ех++) ( 11тфг 1 = 10 * дпс(ех; 1лзс 2 = 1лзд 1+ 9; ЕЕ (дпс(ех == 9) 1лдг 2 = 100; яуасеи.огас.ргдпс1п("" + 1лдс 1 + " — " + 11вфг 2 + " " ь 1геЧ(дпс(ех)) //* конец цикла 1ог(1пс(ех = 0; //* конец функции сапс)т ((Чедас1че1пригЕхсерсдоп ) //* конец метода Ьц11б01вс В программе определена исключительная ситуация ))еоас1че1прнСЕхсерсдоп, возникающая при вводе отрицательного числа.

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

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

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

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