Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Исключения

295
03 марта 2003 года
gray_k
356 / / 20.12.1999
Кто нибудь знает какие исклбчения генерит IB Express? Хочу чтобы при нарушении уникальности ключа выскакивало бы моё сообщение.
try
{
IBQuery1->ApplyUpdates();
}
catch(/*не знаю что*/)
{
ShowMessage("Уже существует");
}
catch(...)
{
IBQuery1->CancelUpdates();
}
293
03 марта 2003 года
SEDEGOFF
586 / / 06.10.2002
Вместо (/*не знаю что*/) попробуй поставить (...) правда у тебя будут отлавливаться все исключения этим catch, значит его следует поставить в конце иерархии catch
295
04 марта 2003 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by SEDEGOFF
Вместо (/*не знаю что*/) попробуй поставить (...) правда у тебя будут отлавливаться все исключения этим catch, значит его следует поставить в конце иерархии catch


Я же написал в коде catch(...){}
Вопрос в том как отловить разные типы исключений, которые генерит IBExpress и выдать об этом вразумительное сообщение на РУССКОМ языке.

293
04 марта 2003 года
SEDEGOFF
586 / / 06.10.2002
ты поставь catch(...), в блоке try создай ошибку которую ты хочешь отловить и запусти на выполнение. Сначала ругается Builder, вот там и прочитай созданное исключение
Например
try
{
StrToFloat("sdfs");
}
catch(...)
{
//sdfsdfsd
}
Так во борланд выдаст сообщение что произошло исключение EConvertError
295
04 марта 2003 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by SEDEGOFF
ты поставь catch(...), в блоке try создай ошибку которую ты хочешь отловить и запусти на выполнение. Сначала ругается Builder, вот там и прочитай созданное исключение
Например
try
{
StrToFloat("sdfs");
}
catch(...)
{
//sdfsdfsd
}
Так во борланд выдаст сообщение что произошло исключение EConvertError


Так тоже не выходит. Отладчик выдаёт EIBInterBaseError with message "........".
catch(EIBInterBaseError) выдаёт ошибку при компиляции
E2457 Delphi style classes must be caught by reference Compiler error
-----------------------------------
You can only catch a Delphi style object by pointer.

Example:

void foo(TObject *p)

{
try
{
throw(p);
}

catch (TObject o) // Error
{
}

catch (TObject *op) // OK
{
}
}
Что это такое?

362
05 марта 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by gray_k

Так тоже не выходит. Отладчик выдаёт EIBInterBaseError with message "........".
catch(EIBInterBaseError) выдаёт ошибку при компиляции
E2457 Delphi style classes must be caught by reference Compiler error
-----------------------------------

Что это такое?



Вот EIBInterBaseError - это как раз и есть класс исключения ;-), а после with message идет его Message

Exception->ClassName() = EIBInterBaseError
Exception->Message = "dlfjkdfjkljfkdjkf"

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог