- •Федеральное агентство связи
- •Государственное образовательное учреждение высшего
- •Профессионального образования
- •«Поволжская государственная академия телекоммуникаций и информатики»
- •Разработка и эксплуатация удаленных баз данных
- •Конспект лекций
- •Введение
- •Раздел 1. Теория проектирования удаленных баз данных архитектуры удаленных бд Структурная схема терминов
- •Архитектуры бд
- •Локальная
- •Архитектура "файл-сервер"
- •Архитектура удаленных бд ("клиент-сервер")
- •Достоинства и недостатки различных архитектур приложений бд
- •Основные технологии доступа к данным Технология com (component object model)
- •Создание распределенных приложений на базе dCom
- •Технология corba (общая архитектура брокеров объектных запросов)
- •Технология midas
- •Доступ к данным по технологии ado
- •Технология com (component object model)
- •Составные части технологии com
- •Создание распределенных приложений на базе dCom
- •Технология midas
- •Доступ к данным по технологии ado
- •Введение в работу с удаленными бд
- •Организация сеанса связи с удаленной бд
- •Сервер interbase
- •Физическая организация базы данных формата InterBase
- •Типы данных в таблицах InterBase Типы столбцов таблиц формата InterBase
- •Организация сеанса связи с удаленной бд
- •Физическая организация удаленной бд
- •Создание и модификация таблиц Операции с таблицами
- •Операции с индексами
- •Графическое проектирование структуры бд Просмотры View
- •Создание бд
- •Создание и использование доменов
- •Компоненты доступа к данным. Запросы на выборку данных
- •Компоненты для доступа к данным и их отображения
- •Формирование запросов на выборку данных
- •Запросы на изменение данных Структурная схема терминов
- •Работа с записями
- •Методика изменения данных при помощи компонент
- •Использование хранимых процедур
- •Понятие и назначение хранимых процедур
- •Язык хранимых процедур
- •Использование триггеров и генераторов
- •Понятие триггера
- •Команды создания, изменения и удаления триггера
- •Генераторы - назначение, создание, установка начального значения
- •Функции, определяемые пользователем – назначение, создание, применение, порядок работы с ними
- •Сортировка, поиск и фильтрация в бд и выборках
- •Сортировка
- •Фильтрация записей
- •Организация данных в бд InterBase
- •Поиск в наборах данных
- •Манипулирование данными в выборках
- •Управление транзакциями и кэширование памяти
- •Механизм транзакций
- •Механизм кэшированных изменений
- •Перехват исключительных ситуаций и обработка ошибок
- •Понятие исключительных ситуаций
- •Обработка исключений
- •Формирование и вывод отчетов
- •Назначение и виды отчетов
- •Компоненты для формирования отчетов
- •Особенности проектирования клиентской части приложения в различных технологиях доступа
- •Особенности проектирования клиентской части приложения в различных технологиях доступа
- •Установка привилегий доступа к данным
- •Понятие привилегии, привилегии по умолчанию
- •Состав параметров при установлении привилегий
- •Назначение привилегий пользователю и группам пользователей
- •Отмена привилегий
- •Копирование, перенос и восстановление данных Создание резервной копии и восстановление бд
- •Восстановление транзакций
- •Регистрация новых пользователей
- •Копирование клиентской части приложения бд Структурная схема терминов
- •Утилита Install Shield
- •Определение файлов, объектов и элементов среды
- •Задание диалога при разархивировании
- •Создание прообраза копии диска
- •Создание копии на дискетах
Обработка исключений
Для обработки исключений в приложении есть один глобальный обработчик и несколько специализированных обработчиков, реагирующих на определенные исключения. Каждое исключение обрабатывает свой специализированный локальный обработчик. Исключение, не имеющее своего локального обработчика, обрабатывается глобальным обработчиком приложения.
Глобальная обработка
Механизм глобальной обработки исключений реализуется через объект Application, который есть в любом приложении. Создание и запуск объекта можно увидеть в файле проекта (.dpr). Одна из функций этого объекта – обеспечение приложения глобальным обработчиком исключений:
При поступлении от ОС сообщения об исключении объект Application генерирует событие OnException типа TexceptionEvent, обработчик которого является глобальным обработчиком исключений.
По умолчанию на это событие реагирует метод HandleException приложения.
В его теле вызывается метод ShowException, который выводит на экран диалоговое окно с описанием возникшего исключения.
Такая обработка не устраняет причину исключения, но обеспечивает пользователя информацией об ошибке, облегчает ее поиск и устранение. Реакция пользователя на сообщение представляет собой жесткий выход из исключительной ситуации.
Программист может выполнить более полную обработку, создав свой глобальный обработчик события OnException. Для этого удобно использовать компонент ApplicationEvents.
Procedure TForm1.ApplicationEvents1Exception (Sender: TObject; E: Exception);
begin
MessageDlg (E. Message, mtError, [mbOK], 0);
// Ваши инструкции по обработке исключения
end;
Здесь обработка также состоит в кратком информировании пользователя, возможно, освобождении памяти, закрытии файлов.
Локальная обработка
Локальная обработка обеспечивает мягкий выход из исключительной ситуации. В состав языка введены две конструкции с похожим синтаксисом:
try … finally;
try … except.
Блоки try включают в себя инструкции, при выполнении которых может возникнуть исключение, например, преобразование данных или запись на диск. Конструкции try могут содержать несколько инструкций и быть вложенными друг в друга. Если в любой из инструкций блока try возникает исключение, то управление передается первой из инструкций блока finally.
try
// инструкции, при выполнении которых может возникнуть ошибка
finally
//инструкции, которые должны быть выполнены даже в случае ошибки
end;
Эта инструкция применяется для выполнения всех необходимых действий перед передачей управления на следующий уровень обработки или глобальному обработчику. Конструкция не удаляет исключение и не обрабатывает его, а выполняет действия, которые должны быть произведены в случае ошибки, например, освобождение памяти, закрытие файла.
Так как инструкция try … finally не ликвидирует исключительную ситуацию, то глобальный обработчик выдаст сообщение о характере ошибки.
Конструкция try … except применяется для перехвата исключения и предоставляет возможность его обработки, глобальный обработчик не вызывается, а обработку должен обеспечить программист.
try
//инструкции, при выполнении которых может возникнуть ошибка
except
//инструкции, которые должны быть выполнены в случае ошибки
end;
Если в инструкциях блока try возникает исключение, то управление передается первой из инструкций блока except. Если исключение не возникло, то инструкции блока except не выполняются. При появлении исключения инструкции блока except могут ликвидировать исключительную ситуацию и восстановить работоспособность программы.
Пример
procedure TForm1.btnOpenClick (Sender: TObject);
begin
try
if OpenDialog1.Execute then begin
Table1.Active := False;
Table1.TableName := OpenDialog1.FileName;
Table1.Active := True;
end;
except
MessageDlg('Ошибка открытия таблицы', OpenDialog1.FileName, '!',
mtError, [mbOK], 0);
end;
end;
При нажатии кнопки btnOpen появляется окно выбора файла таблицы БД для открытия. После выбора файла таблицы набор данных Table1 связывается с этой таблицей и выполняется открытие набора данных. Инструкции, управляющие выбором и открытием файла, включены в блок try, так как. возможна ошибка. При ее возникновении выполняется блок except. В примере обработка заключается только в выдаче предупреждения.
Блок except можно разбить на несколько частей с помощью конструкций on … do, позволяющих анализировать класс исключения для его более удобной и полной обработки.
on {Идентификатор: класс исключения} do
{Инструкции обработки исключения этого класса};
else {Инструкции};
Если класс возникшего исключения совпадает с указанным после on, то выполняются инструкции после слова do.
Идентификатор произвольно задается пользователем и является необязательным, т.е. может отсутствовать, при этом не ставится и (:). Идентификатор – это локальная переменная, представляющая собой экземпляр класса исключения, который можно использовать для доступа к объекту возникшего исключения. Эта переменная доступна только внутри on … do.
Если в блоке except расположено несколько инструкций on ... do, то else, располагающийся в конце блока, относится ко всей совокупности конструкций. Инструкции после do и else могут быть составными.
Если какие-либо действия должны быть выполнены независимо от того, произошла ошибка или нет, то удобно использовать инструкцию try...finally. Однако эта конструкция не обрабатывает исключения, а лишь смягчает их последствия. Для локальной обработки внутрь конструкции try...finally можно включить try … except.
Используемые для доступа к данным компоненты TTable и TQuery имеют специальные события для обработки исключений. Например, для компонента TTable такими событиями являются:
OnEditError – ошибка редактирования или вставки записи;
OnPostError – ошибка закрепления изменений в записи;
OnDeleteError – ошибка удаления записи.