Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сообщение EXCEPTION'а


3APA3A ©   (2004-06-27 21:28:00) 

Создаю я exception
  CREATE EXCEPTION TEST_EXPT 'Some exception';
Когда он срабатывает на клиенте вылезает сообщение типа
 (название класса не помню) with message 'exception 1 : Some exception'.
 Вопросы
  1) Как мне распознать, что это именно "мое" исключение а не какой-нибудь системный сбой? (Класс исключения то у всех одинаковый)
  2) Можно ли убрать строки 'exception 1...' и просто выводить 'Some exception'  (число - это как я понял ExceptionID)...


Digitman   (2004-06-28 12:31:00) [1]


> По свойству EIBInterBaseError.IBErrorCode


В общем случае нельзя жестко привязываться к IBErrorCode
после backup/restore коды польз.исключений могут измениться

В частном случае в принципе можно привязаться к IBErrorCode единственного польз.исключения TEST_EXPT, но при этом придется задействовать соотв.FB-фичу:

1. В ХП/триггере возбуждаем польз.исключение
EXCEPTION TEST_EXPT  ' 0000Some exception';

где 0000 - стр.представление некоего фиксированного спецкода ошибки для анализа на кл.стороне

2. На кл.стороне

on e:EIBInterBaseError do
case IBErrorCode of
1: begin
    FixedErrCode := IntToStr(Copy(e.message, 1, 4)); // прикладной код ошиб.ситуации 0000
    case FixedErrCode of
     0: Showmessage('Такая-то ошибочная ситуация');
     ...
    end;
  end;


3APA3A   (2004-06-28 11:13:00) [2]

Извиняюсь, забыл указать, но речь действительно идет про InterBase.

  По свойству EIBInterBaseError.IBErrorCode и как мне узнать какой код будет у моего исключения?  

  Убрать лишнюю часть строки EIBInterBaseError.Message - это проблема?- я не совсем это имел в виду.... Может быть у сервера где-нибудь в настройках есть это....


DrPass   (2004-06-28 00:58:00) [3]


> A кто сказал про InterBase????

Я не обратил внимания. Но я думаю, автор поста догадается заменить EIBInterBaseError на EDataBaseError?


Курдль   (2004-06-27 23:25:00) [4]


> DrPass ©   (27.06.04 22:52) [2]

A кто сказал про InterBase????


DrPass   (2004-06-27 22:52:00) [5]

1. По свойству EIBInterBaseError.IBErrorCode
2. Убрать лишнюю часть строки EIBInterBaseError.Message - это проблема?


Курдль   (2004-06-27 21:42:00) [6]


...
except
 on E: EDataBaseError do Application.MessageBox('Ошибка', E.Message, MB_ICONSTOP);

В некоторых СУБД можно генерить исключения с определенным кодом и обрабатывать его по E.ErrorCode


Наверх

Титульная страница Поиск, карта сайта Написать письмо