powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обработка exception в DLL
25 сообщений из 62, страница 2 из 3
Обработка exception в DLL
    #40135386
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill Lagunov
Что делать в данной ситуации?

Задать себе вопрос - а нахрена мне вообще эта DLL. Я примерно на 99.99% уверен, что убедительного ответа на этот вопрос не существует, просто (судя по тому, что я вижу в приведённых исходниках) Вы полны решимости избежать хороших практик и собрать все грабли, которые существуют на этом пути.

YuRock
Выпускать из dll эксепшены наружу - тоже не очень стиль :)

Смотря для кого. Для тех, для кого это проблема, писать dll - вообще не очень стиль.

Кроик Семён
в DLL не должно возникать никаких exception, следует начинку каждой экспортируемой функции обернуть в try .. except и возвращать код ошибки. А если интересен и текст ошибки, то тут несколько вариантов: 1) либо добавить еще одну функцию, например GetLastErrotText, 2) либо через параметры функции

Какой ужас. Если бы так было в самом деле, стоило бы застрелиться.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135398
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Если бы так было в самом деле, стоило бы застрелиться.
Какие альтернативы?
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135401
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно, не каждый делает DLL, использующуюся исключительно одним приложением,
собранным исключительно той же версией компилятора. Правда, сочетание этих двух
факторов делает бессмысленным само использование DLL, но кто ж Вам запретит...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135404
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Тоже посчастливилось столкнуться к подобным глюком в IBSQLMonitor (D2007).
А с ФИБами сравнивал ?
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135409
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

ФИБы не используем.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135444
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Очевидно, не каждый делает DLL, использующуюся исключительно одним приложением

Это бессмысленное и не нужное условие. Тем не менее, мне было бы любопытно провести опрос - у кого сколько DLL "использующихся разными приложениями" и сколько DLL "использующихся исключительно одним приложением". Что-то мне подсказывает, что список жалующихся на проблемы с DLL практически совпадёт со списком тех, у которых доминирует "одно приложение".

Dimitry Sibiryakov
Правда, сочетание этих двух факторов делает бессмысленным само использование DLL

А это уже глупость, которую Вы ввернули только для того, чтобы хоть чучелом, хоть тушкой вырулить к желаемому ответу.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135451
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЭто бессмысленное и не нужное условие.

Это абсолютно необходимое условие. Мы ведь всё ещё говорим о выбрасывании
исключения в DLL и его поимке в приложении? То есть об обеспечении как минимум
трёх условий:
1) Одинаковая система исключений;
2) Одинаковая двоичная раскладка класса исключения;
3) Использование одного и того же менеджера памяти для выделения экземпляра
класса исключения и его освобождения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135455
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
То есть об обеспечении как минимум трёх условий:

И какое из этих трёх условий мешает использовать DLL в нескольких приложениях?
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135519
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Dimitry Sibiryakov
То есть об обеспечении как минимум трёх условий:

И какое из этих трёх условий мешает использовать DLL в нескольких приложениях?

Зачем в этих условиях DLL, если есть BPL?
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135549
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
И какое из этих трёх условий мешает использовать DLL в нескольких приложениях?
Вот это
Dimitry Sibiryakov
2) Одинаковая двоичная раскладка класса исключения;
С переходом на новую версию Delphi никто не будет пересобирать все dll
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135554
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker
Зачем в этих условиях DLL, если есть BPL?

Зачем иголка с ниткой, если есть топор? Меня всегда удивлял этот вопрос. Единственное преимущество BPL - её можно инсталлировать в IDE. Когда это не нужно (то есть в 99% случаев), она не имеет преимуществ - одни недостатки. Так зачем в этих условиях BPL, когда есть DLL?

_Vasilisk_
С переходом на новую версию Delphi никто не будет пересобирать все dll

То есть ты выбираешь ежедневный геморрой ради того, чтобы избежать одной занимающей несколько минут операции, которая случается не каждый год?
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135556
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, его не переубедишь!
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135560
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно одной dll (плугина), написанной не на делфи представителем сторонней конторы. Даже в общую сборку не входящей.
Чтобы закончить разговор как о bpl, так и о dll, собранных на одной версии делфи.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135561
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger
Ребята, его не переубедишь!

Без разумных аргументов - не переубедишь, это точно.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135616
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerТак зачем в этих условиях BPL, когда есть DLL?

Автоматически решается вопрос менеджера памяти и классового рантайма. Плюс
неявные служебные функции инициализации/финализации, которые не загонят процесс
в дедлок, как это сделано в стартовом посте. В общем, квинтэссенция RAD: забота о программисте, чтобы ему не пришлось голову напрягать и знания о граблях по крупице накапливать.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135617
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Автоматически решается вопрос менеджера памяти
Зачастую это минус, а не плюс.
Даже здесь на форуме не единожды проскакивали задачи по производительности, в которых одно из решений было - разбить работающие потоки по разным dll, чтобы избежать блокировок менеджера памяти.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135628
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Даже здесь на форуме не единожды проскакивали задачи по производительности, в которых одно из решений было - разбить работающие потоки по разным dll, чтобы избежать блокировок менеджера памяти.

Для этого проще процессами параллелиться, а не длл'ки плодить.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135634
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
YuRock
Даже здесь на форуме не единожды проскакивали задачи по производительности, в которых одно из решений было - разбить работающие потоки по разным dll, чтобы избежать блокировок менеджера памяти.

Для этого проще процессами параллелиться, а не длл'ки плодить.
Есть плюсы и минусы.
Общая память - один из плюсов dll в сравнении с процессами в данном случае.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40135639
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
То есть ты выбираешь ежедневный геморрой ради того, чтобы избежать одной занимающей несколько минут операции, которая случается не каждый год?
Никакого геморроя не наблюдаю. Что я делаю не так?
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40136173
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Автоматически решается вопрос менеджера памяти и классового рантайма.

В смысле, то же самое, что в случае dll делается простановкой одной галочки? Ну типа плюс, конечно, но по сравнению с минусами примерно то же, что оловянный солдатик по сравнению со Статуей Свободы.

_Vasilisk_
Никакого геморроя не наблюдаю. Что я делаю не так?

Скорее всего - привык к геморрою и не считаешь его таковым. Например - поступаешь, как здесь советуют, то есть не выпускаешь исключений из dll и корячишься с кодами возврата. В целом, мне будет проще ответить, если я увижу пару примеров того, что ты считаешь негеморройным кодом.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40136389
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
Кроик Семён
в DLL не должно возникать никаких exception, следует начинку каждой экспортируемой функции обернуть в try .. except и возвращать код ошибки. А если интересен и текст ошибки, то тут несколько вариантов: 1) либо добавить еще одну функцию, например GetLastErrotText, 2) либо через параметры функции

Какой ужас. Если бы так было в самом деле, стоило бы застрелиться.

Когда кто-то называет ужасом то, что я считаю исключительно добродетельной практикой, требуются весомые доводы, чтобы не считать озвученное мнение глупой ересью. Так что ждемс.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40136490
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Когда кто-то называет ужасом то, что я считаю исключительно добродетельной практикой, требуются весомые доводы, чтобы не считать озвученное мнение глупой ересью. Так что ждемс.

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

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

К сожалению, у нас пока что не идеальный мир, и в этом не идеальном мире, помимо бизнес-кода, программа должна содержать некоторое количество кода технического. Объявление переменных, проверка диапазонов допустимых значений, обработка исключений.... Это делает программу лучше, но одновременно размазывает, замыливает и маскирует главное - бизнес-логику. Для того, чтобы программа была хорошей (в плане - читаемой, легко сопровождаемой, содержащей как можно меньше ошибок и т. д.) технический код должен быть сколь возможно минимизирован и сколь возможно отделён от бизнес-логики. Будет верным сказать, что из двух инструментов, порождающих эквивалентные программы, лучше тот, который требует меньше технического кода, из двух подходов лучше тот, который при эквивалентном результате требует меньше технического кода.

В частности, коды возврата - очень нездоровая в смысле объёма технического кода практика. Пока программисты их использовали - даже простейшие бизнес-функции кодировались огромными простынями, в которых было очень сложно разбираться. Использовались специальные приёмы кодирования для того, чтобы хоть как-то справляться с этой сложностью. Когда появились исключения - нормальные программисты с восторгом за них ухватились, потому что они дали возможность писать куда более сложную бизнес-логику гораздо короче, гораздо яснее, не в пример сопровождаемее. Благодаря механизму исключений трудоёмкость адекватной реализации бизнес-логики (включая тестирование, отладку и последующее сопровождение) снизилась минимум на порядок.

В обсуждаемой ситуации у нас есть выбор. Можно писать DLL ровно так же, как обычный Delphi-код без DLL. Коротко и ёмко. А можно непонятно зачем повесить на себя дикий геморрой, в котором "обязательно перехватывать исключения", "использовать коды возврата" и прочие ужас-ужас-ужас. И остаётся только один вопрос - зачем? В тех редких случаях, когда на этот вопрос есть действительно разумный ответ - ok, придётся мучиться как в прошлом веке. Но в 90% случаев это просто идиотизм архитектора, поскольку для этого нет ну совершенно никаких объективных причин.
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40136510
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильные посылы, за уши притянутые к конкретной проблеме
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40136512
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

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


+100500
dll ради dll )))
...
Рейтинг: 0 / 0
Обработка exception в DLL
    #40136660
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
...

А, ты насчет данного конкретного случая. Просто утверждение прозвучало на редкость категорично, вот я и подумал - вдруг есть уже супер-мега-практика передавать исключения кросс-язычно, а я и не в курсе
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обработка exception в DLL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]