Исключения
try
{
IBQuery1->ApplyUpdates();
}
catch(/*не знаю что*/)
{
ShowMessage("Уже существует");
}
catch(...)
{
IBQuery1->CancelUpdates();
}
Вместо (/*не знаю что*/) попробуй поставить (...) правда у тебя будут отлавливаться все исключения этим catch, значит его следует поставить в конце иерархии catch
Я же написал в коде catch(...){}
Вопрос в том как отловить разные типы исключений, которые генерит IBExpress и выдать об этом вразумительное сообщение на РУССКОМ языке.
Например
try
{
StrToFloat("sdfs");
}
catch(...)
{
//sdfsdfsd
}
Так во борланд выдаст сообщение что произошло исключение EConvertError
ты поставь 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
{
}
}
Что это такое?
Так тоже не выходит. Отладчик выдаёт 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"