Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 отловить исключение, обраотать его и передать выше  [new]
GrigoriyFomin
Member

Откуда:
Сообщений: 139
Есть некий рабочий код проводки товара:
создается новая накладная,
создаются проводки,
создается кассовая операция.

Все эти 3 операции обвернуты в try .. except и при возникновении любого исключения на любой стадии ведет к откату пишущей транзакции - все замечательно.

Но теперь решил отдельно обработать исключение, которое возникает на втором этапе (проводок) и написал по нему развернутое сообщение об ошибке пользователю с расшифровкой всех параметров.
Но теперь основная обертка не знает об исключении и пытается продолжить выполнение алгоритма.
Суть вопроса - как мне отработать локальный обработчик исключения и прервать выполнение основного алгоритмся с возбуждением исключения для внешнего обработчика?
Как вариант вижу - сделать это все во внешнем обработчике, но это не совсем верно, создание проводки происходит не только в этом алгоритме, но и в других, поэтому реагирование на локальное исключение более правильно

Сообщение было отредактировано: 16 окт 20, 21:24
16 окт 20, 21:26    [22215723]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26780
GrigoriyFomin
Но теперь основная обертка не знает об исключении и пытается продолжить выполнение алгоритма.

Есть такое слово - raise
16 окт 20, 21:39    [22215731]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
GrigoriyFomin
Member

Откуда:
Сообщений: 139
wadman
GrigoriyFomin
Но теперь основная обертка не знает об исключении и пытается продолжить выполнение алгоритма.

Есть такое слово - raise


а его корректно вызывать в секции EXCEPT ? там какого-то перекоса не будет?
16 окт 20, 21:40    [22215732]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26780
GrigoriyFomin
wadman
пропущено...

Есть такое слово - raise


а его корректно вызывать в секции EXCEPT ? там какого-то перекоса не будет?

Да. Нет.
16 окт 20, 21:42    [22215735]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
GrigoriyFomin
Member

Откуда:
Сообщений: 139
wadman, спасибо, просто добавил Raise и алгоритм заработал как и прежде!!! Век живи - век учись
16 окт 20, 21:48    [22215738]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
bk0010
Member

Откуда:
Сообщений: 4991
Обработали и пришите raise; - исключение будет повторено.
16 окт 20, 21:48    [22215739]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51521

GrigoriyFomin
Век живи - век учись

А в предыдущий век учебник по основам языка прочитать было не судьба?..

Posted via ActualForum NNTP Server 1.5

16 окт 20, 22:05    [22215754]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Mixrud
Member

Откуда:
Сообщений: 42
Именно raise! Точнее просто raise. Я тоже испытал проблемы: в except end raise Exception.create писал.
17 окт 20, 02:02    [22215802]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63657
Блог
GrigoriyFomin
Но теперь решил отдельно обработать исключение, которое возникает на втором этапе (проводок) и написал по нему развернутое сообщение об ошибке пользователю с расшифровкой всех параметров.

Верная мысль.

GrigoriyFomin
Суть вопроса - как мне отработать локальный обработчик исключения и прервать выполнение основного алгоритмся с возбуждением исключения для внешнего обработчика?

Читаем классиков: 1950925

P.S. У меня ещё есть AddExceptionFooter и AddExceptionHeaderFooter, об их содержимом можно догадаться самостоятельно.
17 окт 20, 02:58    [22215808]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Mixrud
Member

Откуда:
Сообщений: 42
softwarer,

Вы про Exception.ClassType ? Да, конечно. Я взял JCLDebug и реализовал на нем печать стека на всех исключениях. Стек не отображается если класс исключения EBusinessException.
17 окт 20, 12:37    [22215871]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63657
Блог
Mixrud
Я взял JCLDebug и реализовал на нем печать стека на всех исключениях. Стек не отображается если класс исключения EBusinessException.

Печать стека - не особо нужная вещь. Выдача значений ключевых параметров - гораздо важнее.
17 окт 20, 12:42    [22215874]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
GrigoriyFomin
Member

Откуда:
Сообщений: 139
softwarer
Mixrud
Я взял JCLDebug и реализовал на нем печать стека на всех исключениях. Стек не отображается если класс исключения EBusinessException.

Печать стека - не особо нужная вещь. Выдача значений ключевых параметров - гораздо важнее.

ну почему - стек позволяет выловить непредвиденные исключения. Хотя использование DevExpress зачастую дает ошибку в их либах - то в EditorRepository, то в обычных компонентах даты.
17 окт 20, 16:29    [22215964]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63657
Блог
GrigoriyFomin
ну почему - стек позволяет выловить непредвиденные исключения.

В воспроизводимом случае набора ключевых параметров достаточно, чтобы воспроизвести ситуацию и разобраться в происходящем. Стек при этом в исходных данных не нужен, он оказывается виден по факту. В невоспроизводимых же случаях... стек лучше, чем ничего, но не особо помогает. По сравнению с просто местом ошибки он мало что даёт.

GrigoriyFomin
Хотя использование DevExpress зачастую

Ну да. Если бы они платили по десять баксов за исправление каждой своей ошибки, я бы разбогател :)
17 окт 20, 16:53    [22215971]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Mixrud
Member

Откуда:
Сообщений: 42
softwarer,

В DevExpress не сталкивался с Exception. А вот с кривой реализацией их компонентов да. Но все подчистил, благо исходники Девок конторой куплены.
17 окт 20, 17:48    [22215989]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63657
Блог
Mixrud
В DevExpress не сталкивался с Exception.

Рад за Вас. У меня прямо сейчас в соответствующем списке 37 проблем, большая часть из которых - "неуловимые" баги DevExpress из серии "у одного из пользователей вдруг невоспроизводимо стрельнуло". Например, первый попавшийся случай:

К сообщению приложен файл (stack.txt - 87Kb) cкачать
17 окт 20, 18:04    [22215994]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13291
Mixrud
В DevExpress не сталкивался с Exception
CxGrid в сложно модели нередко подглючивает.
Да и вся концепция обращения с данными в нем, мягко говоря, не очень, попытка скрестить нескрещиваемое.
Самое полезное там - dxLayoutControls. Ну и сами контролы сильно лучше VCL-ских, как по дизайну, так и по функционалу.
17 окт 20, 18:16    [22215999]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13291
Дубль

Сообщение было отредактировано: 17 окт 20, 18:12
17 окт 20, 18:16    [22216000]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63657
Блог
Соколинский Борис
Самое полезное там - dxLayoutControls.

Да ну что Вы :(
17 окт 20, 18:18    [22216001]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13291
softwarer, я серьезно.
Вообще не представляю, как без него можно мультиязычное приложение нормально сотворить.
17 окт 20, 18:25    [22216005]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 2416
Естественно есть у нас баги. И у Эмбаркадеро. Но большинство обращений в саппорт связано с проктостоматологическим сценарием использования наших компонентов. И это беда всех более-менее крупных вендоров больших библиотек.
17 окт 20, 18:59    [22216020]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63657
Блог
Соколинский Борис
softwarer, я серьезно.
Вообще не представляю, как без него можно мультиязычное приложение нормально сотворить.

Мне не приходилось всерьёз геморроиться мультиязычностью, не могу сказать. Но свой набор layout-компонент я сотворил после знакомства с явой, году в 2005-м, и когда довелось столкнуться с девэкспрессовским, реакция "уберите это от меня". Очень сложно, неудобно и бедно.
17 окт 20, 18:59    [22216021]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13291
softwarer
Очень сложно, неудобно и бедно.
У меня строго противоположные впечатления по всем пунктам. Ваш вариант не видел, поэтому сравнить не могу.
17 окт 20, 19:08    [22216023]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 2416
У всех разный уровень вхождения. Кому-то легко, кому-то тяжело
17 окт 20, 19:10    [22216024]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Mixrud
Member

Откуда:
Сообщений: 42
white_nigger,

А вы сотрудник DevExpress ? К TCxExtLookupcombobox можно к вьюхе подключить TCustomDatasource?
Году так в 2005 было нельзя.

Сообщение было отредактировано: 17 окт 20, 21:16
17 окт 20, 21:20    [22216051]     Ответить | Цитировать Сообщить модератору
 Re: отловить исключение, обраотать его и передать выше  [new]
Mixrud
Member

Откуда:
Сообщений: 42
softwarer
Mixrud
В DevExpress не сталкивался с Exception.

Рад за Вас. У меня прямо сейчас в соответствующем списке 37 проблем, большая часть из которых - "неуловимые" баги DevExpress из серии "у одного из пользователей вдруг невоспроизводимо стрельнуло". Например, первый попавшийся случай:

А у вас включён multithreading в опциях? Если включён, то выключите.
17 окт 20, 21:25    [22216052]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить