Главная » Просмотр файлов » Н. Джехани - Язык Ада (1988)

Н. Джехани - Язык Ада (1988) (1160771), страница 37

Файл №1160771 Н. Джехани - Язык Ада (1988) (Н. Джехани - Язык Ада (1988)) 37 страницаН. Джехани - Язык Ада (1988) (1160771) страница 372019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

Язык программирования Ада содержит некоторые предопределенные исключенця, описанные в пакете БТАХ1)АК1) (приложение С руководства по языку). В языке программирования Ада такие исключения возбуждаются автоматически, если удовлетворяются описанные ниже условия, но они также могут явно возбуждаться пользователем.

Предопределенные исключения следующие: Глава б Некоторые примеры возбуждения исключений приведены ниже: га(яе ТЕМР 0$)ТБ10Е Е1М1ТЯ; гауке )ч(()МЕК)С ЕККОК' -- предопределенное исключение га)яе БТАСК ОЧЕКРЬО%; га)яе; -- повторное возбуждение исключений будет обсужлаться Оператор возбуждения без имени исключения может появиться только в обработчике исключений (если только обработчик исключений не расположен во вложенной подпрограмме, пакете или задаче). Этот оператор снова возбуждает исключение, которое вызвало переход на обработчик исключения с данным оператором возбуждения.

5.4. Описание обработчиков исключения (11.21 Обработчики исключения помещаются в конце блока, подпрограммы, пакета или тела задачи, вслед за ключевым словом ехсерйоп. Каждый обработчик исключения представляет собой последовательность из одного или нескольких операторов, которые обрабатывают соответствующие исключения. Обработчики исключения имеют следующую форму: зуйеп выбор исключения ( ) выбор исключения ) последовательность операторов где выбор исключения — это имя исключения или ключевое слово огйегя. Ключевое слово огйегя может появиться только в обработчике исключения, причем этот обработчик должен быть последним в блоке, подпрограмме, пакете или задаче. Выбор о(йегв задает все исключения, которые могут возбуждаться в блоке„ подпрограмме, пакете или задаче, но обработчик исключения для них явно не указан.

Сюда также относятся исключения, не являющиеся видимыми, т. е. исключения, описанные, возбужденные и распространенные из других частей программы, но для которых обработчики не были предусмотрены. Если исключение должно снова возбуждаться в обработчике исключения с альтернативой о(йегя (с тем чтобы исключение распространить на некоторые другие части программы и завершить выполнение обработчика), то необходимо использовать сокращенную форму оператора возбуждения га(ае; Необходимо использование именно этой формы оператора возбуждения, так как имя исключения не известно обработчику — оно анонимно.

При возбуждении исключения остальные операторы в блоке, подпрограмме, пакете или задаче не выполняются. Вместо этого начинается выполнение соответствуюшего обработчика исключения (если он имеется)'з. Если исключение нельзя обработать в главной программе, то программа завершается. Обработчик исключения имеет те же права и возможности, что и блок, подпрограмма, пакет или задача, в которых обрабатываются исключения. Например, обработчик исключения, связанный с подпрограммой, имеет доступ к "Если лля обработки ошибочноя ситуации не существует подходящего обработчика исключения (прямо или косвенно используя выбор), то выполнения блока, подпрограммы, пакета или залачи прекращается и происходит распространение исключения. — Прим.

перев. Исвючвяив звб локальным переменным и параметрам подпрограммы и может содержать оператор возврата. Некоторые примеры обработчиков исключения приведены ниже, згйеп Х()МЕК1С ЕККОК» геГвгв 1ХТЕОЕК'1.АБТ, гч)геп ТЕМР 01)ТБ)ОЕ Ь)М1ТЯ вЂ” вызов требуемых процедур инициализации — 1ММЕО1АТЕ БН\ЗТ 001ч'Х вЂ” указать причины для окончания работы реактора ИТ < Т М1Х(йеп Р()Т("БН()Т ВОЯХ камера сжатия переохлаждена"); е1зе Р(ЗТ("БН1)Т 1)0%Х камера сжатия перегрелась"); епп' И; 5.5. Активизация обработчиков исключений [11.41 Активизация конкретного обработчика исключения зависит от выполнения программы, а не от ее текста — связь обработчика с исключением динамическая, а не статическая.

Предположим, что в подпрограмме Я нет обработчика исключения Е. Исключение Е, когда оно возбуждается, будет распространено на программу, которая вызывала подпрограмму Б, и здесь же обработано, а не в той части программы, где описана Я. Выбор обработчика исключения также зависит от того, выявилось ли исключение во время выполнения оператора или же во время предвыполнения (обработки) описания. 5.5.1. Исключения, возбуждаемые во время выполнения оператора В случае когда исключение возникает во время выполнения оператора, выполнение оставшейся части блока, подпрограммы, пакета или задачи, в которых это исключение появилось, заменяется выполнением локального обработчика исключения (если он присутствует), В противном случае, если не был указан локальный обработчик исключения, то исключение распространяется на другие части программы, что будет объяснено ниже.

Если исключение появилось в 1) подпрограмме, то выполнение подпрограммы прекращаегся и исключение возбуждается в той точке, из которой была вызвана подпрограмма. Если подпрограмма является главной программой, то ее выполнение прекращается; 2) блоке, то выполнение блока прекращается и исключение немедленно возбуждается в охватывающей данный блок программе; 3) теле ла«еаза, то обработка тела пакета завершается. Если пакет является библиотечным модулем, то выполнение главной программы прекращается.

Если же пакет не является библиотечным модулем, исключение возбуждается в той части программы, которая содержит тело пакета или его след (следы описываются в гл. 7); 4) задаче, то выполнение задачи прекращается; Глввв В 5) последовательности операторов обработчика исключения (но не в блоке, вложенном в обработчик исключений), выполнение обработчика исключения завершается и распространяется новое исключение, зависящее от того, находится ли обработчик исключения в блоке, подпрограмме, пакете или задаче (используя описанные выше правила).

5.5.2. Пример Рассмотрим процедуру КООТБ, которая вычисляет корни гг и гз квадратного уравнения. Корни вычисляются по формулам -1 я:л 2а -Ь вЂ” чЬ вЂ” 4ас Гх гг = 2а где а Ф 0 и Ьз — 4ас > О. Процедура КООТБ для вычисления корней использует функцию БОКТ (описанную в гл. 1). Исключение СОХБТКА1ХТ ЕККОК распространяется в процедуру КООТБ нз функции Я)КТ. СОХВТКА1ХТ ЕККОК возбуждается в Я)КТ, когда 'оОКТ вызывается с отрицательным фактическим параметром.

Исключение распространяется, так как БОКТ не содержит каких-либо обработчиков исключения. Исключение Х(ЗМЕК1С ЕККОК возбуждается в процедуре КООТБ, когда делается попытка деления на нуль (это происходит, если коэффициент а равен О) или когда при умножении появляются очень большие числа. Процедура КООТБ распространяет сигнал об ошибочных условиях в вызывающую программу, возбуждая исключение ЕККОК после обработки любого появившегося в ней исключения: иВЬ ТЕХТ 1О; вве ТЕХТ 10; — делает ввод-вывод строк доступным и видимым в КООТБ гг!(Ь ВОКТ; — скомпилировала раздельно и доступна внутри КООТВ ргоседпге КООТВ (А, В, С: Н.ОАТ; К1, К2: оп! Н.ОАТ) гв ТЕМР: Н.ОАТ; ЕККОК: ехсерйоп; -- будет распространяться на вызывающую КООТБ -- подпрограмму, если исключение возбуждается в КООТВ -- или распространяется на нев Ьея!и ТЕМР: БОКТ(В»  — 4.0 «А ' С); К1: (-В+ ТЕМР) / (2.0 ° А); К2: (- — ТЕМР ) / (2.0» А); ехсерг!оп ггЬеп Х()МЕК1С ЕККОК > Р(ЗТ(«ОШИБКА в»»» в ч» ПЕРЕПОЛНЕНИЕ ИЛИ ДЕЛЕНИЕ НА 0»); га!ве ЕККОК; 1ВУ Исключения венец СОХБТКАИч(Т ЕККОК ) Р13Т («ОШИБКА * * * * в * в В* В-4 в А в С отрицательное число»); га)ке ЕККОК; епй КООТБ; Исключение ЕККОК должно обрабатываться программой, вызывающей подпрограмму КООТБ, содержащую обработчик исключения с ключевым словом оенегя, так как имя ЕККОК находится вне области видимости КООТБ.

Программа, вызывающая процедуру КООТБ, не может определить причину возникновения исключения, т. е. является ли эта исключительная ситуация ошибкой ограничения или числовой ошибкой. Эту информацию можно передать программе, вызывающей процедуру КООТБ, повторно возбуждая исключения ХУМЕК1С ЕККОК и СОХБТКА1ХТ ЕККОК (вместо возбуждения исключения ЕККОК), используя оператор гаие; Эти предопределенные исключения будут видимы в программе, вызывающей процедуру КООТБ. 5.5.3. Исключения, возбуждаемые при предвыполнении описаний Появление исключения при предвыполнении" описательной части или описания подпрограммы, пакета или задачи вызывает прекращение их предвыполнения. Распространение исключения зависит от того, где оно возбуждается.

Если исключение возбуждается в 1) описании тела подпрограммы, то исключение распространяется на участок программы, содержащей вызов подпрограммы. Если подпрограмма является главной программой, то выполнение программы завершается; 2) описании в блоке, то исключение распространяется на охватывающую этот блок программу; 3) описании тела пакета, то исключение распространяется на ту часть программы, которая содержит пакет. Если пакет является библиотечной единицей, то выполнение главной программы завершается; 4) описании тела задачи, то исключение ТАБК1)ь(О ЕККОК распространяется на ту часть программы, которая вызвала активизацию данной задачи; задача становится завершенной; 5) описании подпрограммы, пвхетв или задачи (т. е.

в их слециЯикации), то исключение распространяется на ту часть программы, которая содержит это описание. Если описание является библиотечной компонентой, то выполнение главной программы завершается, 5.6. Исключения и задачи 111.5] Во время рандеву или попытки начать рандеву причиной возбуждения или распространения исключений будут следующие ситуации: 1. Вызванная задача завершается или уже завершена перед вызовом входа. Исключение ТАБК1ХО. ЕККОК возбуждается в вызывающей задаче в точке вызова. и Предвыполнение описания — зто пролесс, в результате которого описание выполняет свое назначение, например создается объект.

— Прим. ред. Глввв в 2. Вьпванная задача становится аварийной во время рандеву. Исключение ТАБК1Ь!О ЕККОК возбуждается в точке вызова. 3. Исключение возбуждается в операторе принятия, локально не обработанном. Исключение распространяется на вызывающую задачу и часть программы, содержащую оператор принятия. Аварийное завершение вызывающей задачи не влияет на вызываемую 'задачу. Если рандеву не началось, то оно аннулируется. В противном случае рандеву заканчивается нормально. 5.7.

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

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

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

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