Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Исключения, возникающие при работе с базами данных
Delphi, обладая прекрасными средствами доступа к данным, основывающимися на интерфейсе IDAPI, реализованной в виде библиотеки Borland Database Engine (BDE), включает ряд обработчиков исключительных ситуаций для регистрации ошибок в компонентах VCL работающим с БД. Дадим краткую характеристику основным из них:
· EDatabaseError - наследник Exception; происходит при ошибках доступа к данным в компонентах-наследниках TDataSet. Объявлено в модуле DB. Ниже приведен пример из Delphi On-line Help, посвященный этому исключению:
repeat {пока не откроем таблицу или не нажмем кнопку Cancel} try Table1.Active: = True; {Пытаемся открыть таблицу} Break; { Если нет ошибки - прерваем цикл} except on EDatabaseError do {Если нажата OK - повторяем попытку открытия Table1} if MessageDlg('Не могу открыть Table1', mtError, [mbOK, mbCancel], 0) < > mrOK then raise; end; until False;
· EDBEngineError - наследник EDatabaseError; вызывается, когда происходят ошибки BDE или на сервере БД. Объявлено в модуле DB:
EDBEngineError = class(EDatabaseError) private FErrors: TList; function GetError(Index: Integer): TDBError; function GetErrorCount: Integer; public constructor Create(ErrorCode: DBIResult); destructor Destroy; property ErrorCount: Integer; property Errors[Index: Integer]: TDBError; end;
Особенно важны два свойства класса EDBEngineError: Errors - список всех ошибок, находящихся в стеке ошибок BDE. Индекс первой ошибки 0; ErrorCount - количество ошибок в стеке. Объекты, содержащиеся в Errors, имеют тип TDBError. Доступные свойства класса TDBError: ErrorCode - код ошибки, возвращаемый Borland Database Engine; Category - категория ошибки, описанной в ErrorCode; SubCode - ‘субкод’ ошибки из ErrorCode; NativeError - ошибка, возвращаемая сервером БД. Если NativeError 0, то ошибка в ErrorCode не от сервера; Message - сообщение, переданное сервером, если NativeError не равно 0; сообщение BDE - в противном случае.
· EDBEditError - наследник Exception; вызывается, когда данные не совместимы с маской ввода, наложенной на поле. Объявлено в модуле Mask.
Заключение Данный урок должен был дать вам достаточно информации для того, чтобы начать исследование того, как Вы можете использовать систему обработки исключительных ситуаций в вашей программе. Вы, конечно, можете обрабатывать ошибки и без привлечения этой системы; но с ней Вы получите лучшие результаты с меньшими усилиями.
|