![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сообщение 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