Здравствуйте, коллеги!
Пишу dll на Embarcadero C++ Builder XE5. 64 бита.
Для соединения с БД на MS SQL Server использую компонент TADOConnection.
//======
try {SQLConnection->Connected = true;}
catch(...)
{
// обработка исключения
};
//======
Всё работает замечательно до тех пор, пока сервер не оказывается недоступен по той или иной причине.
Дело в том, что обычный способ отлова исключений (try catch) не срабатывает, если запускать приложение не из под IDE, и программа аварийно завершает работу.
Есть подозрение, что это, вообще, баг XE5.
Если кто-то сталкивался с этой или подобной проблемой и решил её, прошу подсказать.
Дополнительно:
Экземпляр TADOConnection создаю динамически. То есть нет формы, нет компонента на форме.
// В заголовочном файле:
class TMyClass {
//...
private:
TADOConnection* SQLConnection;
};
//...
// В конструкторе TMyClass:
//...
try {SQLConnection = new TADOConnection(0);}
catch(...)
{
// обработка
};
//...
try {SQLConnection->Connected = true;}
catch(...)
{
// обработка (исключение не ловится, вопрос топика)
};
//...
Собирал со снятым флагом "Build with runtime packages". Решил взвести флаг и пересобрать. Ошибка отловилась. Но таскать за собой bpl'ки не хочется.
Компания Embarcadero предлагает
ознакомиться с новыми возможностями продуктов и своими глазами увидеть, почему комплексная среда RAD Studio XE7 является универсальным решением для разработчика, которая позволяет быстро создавать приложения, обладающие всем необходимым функционалом для взаимодействия с практически любыми устройствами, корпоративными источниками данных и популярными облачными сервисами.
Мероприятия пройдут в трёх городах России и СНГ: Москве, Астане и Екатеринбурге. ?
Регистрация и дополнительная информация
http://delphitour.ru