Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227

FireDAC обработка ошибок -или в чем прикол ?

02.02.2017, 02:53. Показов 4314. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я чего-то не пойму, делаю всё по докам, а ошибки не ловятся. Вот как делаю

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
try
 
            qMain.Disconnect();
 
            // Attention here ! Original statement FDQuery.SQL.Text
            // should be without semicolon, also without params
            qMain.SQL.Text:=FInitialSQLText;
            qMain.SQL.Text:=qMain.SQL.Text+' LIMIT :StartRow,:CountOfRows';
 
 
            with qMain do begin
 
            if FIsSomeUser then Params.ParamValues['users_id']:=FIDUser;
 
            if FIsSomeFileType then Params.ParamValues['FileType']:=FFileType;
            
 
            Params.ParamValues['StartRow']:=AStartRow;
            Params.ParamValues['CountOfRows']:=ACountOfRows;
 
 
            end;
 
 
 
           qMain.Open();
 
         except
 
          on E: EFDException do
          raise Exception.Create('Error Message '+E.Message);
 
          on E: EFDDBEngineException do
          raise Exception.Create('Error Message '+E.Message);
 
          on E: Exception do
          raise Exception.Create('Error Message '+E.Message);
 
     end;
Но ловит в режиме отладки, а когда "просто" запускаешь - не ловит - в чем прикол?

Добавлено через 1 минуту
Ещё вот так пробовал

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
procedure TDBPagination.qMainError(ASender, AInitiator: TObject; var AException: Exception);
 
var oExcDB: EFDDBEngineException;
    oExc: EFDException;
 
begin
 
//
if AException is EFDException then
 
  begin
 
    oExc:=EFDException(AException);
    raise Exception.Create('Error Message '+oExc.Message);
 
  end;
 
if AException is EFDDBEngineException then
 
  begin
 
    oExcDB:=EFDDBEngineException(AException);
    raise Exception.Create('Error Message '+oExc.Message);
 
  end;
 
 
 
end;
...
Delphi
1
  qMain.OnError:=qMainError;
Но тоже, курсором моргнет и никаких тебе ошибок
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2017, 02:53
Ответы с готовыми решениями:

Ошибка FireDac или драйвер ODBC?
Здравствуйте! Вот второй день бьюсь с проблемой драйвера Microsoft ODBC. Работает все через FireDac Компоненты: FDConnection + FDQuery +...

В чем прикол?)
Здравствуйте уважаемые программисты)Не пойму почему компилятор игнорирует 1 else...Вот код: / ffff.cpp: главный файл проекта. ...

В чем прикол?
Господа форумчане! При умножении числа на букву маткад иногда автоматом ставит знак умножения (скрытый оператор), иногда нет (знак...

6
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,157
Записей в блоге: 3
02.02.2017, 08:53
1. оформите код нормально - уберите пробелы и табы
2.

попробуйте так

Delphi
1
2
3
4
try
except
  on E:Exception do Showmessage(E.Message);
end
0
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
02.02.2017, 13:49  [ТС]
qwertehok, спасибо, заработало, я и сам думал showmessage ставить. Но почему работает с showmessage и не работает с raise? В чем причина?

Я такое поведение наблюдал на компонентах InDY, но там понятно - все работает в потоках, там и в документации написано через showmessage делать.

А вот FireDAC документация советует так

Delphi
1
2
3
4
5
6
7
8
9
10
11
FDConnection1.StartsTransaction;
try
  FDQuery1.ExecSQL;
  FDConnection1.Commit;
except
  on E: EFDDBEngineException do begin
    FDConnection1.Rollback;
    // do something here
    raise;
  end;
end;
P.S По пробелам и табам - мне так читать удобнее, но спасибо за совет )))
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
03.02.2017, 02:32
Цитата Сообщение от GringoV Посмотреть сообщение
Но почему работает с showmessage и не работает с raise?
А какой смысл ты подразумеваешь в конструкции
Delphi
1
2
3
4
5
6
try
...
except
  on E: XXXException do
    raise Exception.Create('Error Message '+E.Message);
end;
0
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
03.02.2017, 02:48  [ТС]
Ну как, остановить работу программы, сообщить об ошибке
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
03.02.2017, 03:17
Цитата Сообщение от GringoV Посмотреть сообщение
Ну как, остановить работу программы, сообщить об ошибке
Ничего не делать. При возникновении исключения работа программы и так прекратится с выдачей сообщения об ошибке.
0
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
03.02.2017, 18:21  [ТС]
Вы имеете ввиду, что вся программа обернута в try except изначально?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2017, 18:21
Помогаю со студенческими работами здесь

А в чем прикол?
Тема такая что вчера ручками в форму добавления новых сайтов на webmaster.yandex.ru забил около 1000 документов. Всё это быстро...

Объясните в чем прикол...
Я изпользую следующее: <a href='club.htm'><img src='button4.jpg' width='110' height='35' name='clubm' ...

А в чем тут прикол сайт на первом месте
Вот интерено получилось на сайт почти нет ссылок он не новый - а висит по запросу "клееный брус" на 1 месте . И в чем прикол?

В чем прикол быть владельцем бесплатных каталогов?
Вроде бы все варианты просмотрел, так и не понял...

Ругается на HomeForm->WindowState=wsMinimized. В чем прикол?
Unit1.cpp(469): E2451 Undefined symbol 'wsMinimized' Как что после "=" писать надо?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru