|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевДа. Поэтому в крайних версиях пакет ошибки есть byte[???] без шифрования, младший байт которого не равен 0. Содержит код слоя, индекс группы методов, индекс метода в группе, номер шага в алгориме метода и код ошибки. Но не соль, отвлекаемся. Важно, в этой схеме нельзя передать исключение в предыдущий слой. Почему нельзя? ВМоисеевБлестящий код - компактен, быстр, обозрим, ничего лишнего и нет гирь, типа а-ля EF. Тоже, что и с исключением Там дело не исключениях. А в умышленном вредительстве. ВМоисеевПонимаю, что жующие жёлуди, не заценят апельсин. Просил же на свой счёт не принимать. Или теперь поклоняться говнокодерам, ибо они пишут от бога, и чтобы понять их творчество надо перейти на определённый уровнь, с помощью зверской наркоты, так чтоли? )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:42 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 14:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553838][21553838] >Хорошо, для Вас напишу так, чтобы было понятнее: Мне понятнее не стало. У меня для полного описания решения задачи получения выборки из базы данных хранимой процедурой, к надо добавить только класс сущности, который обычно определяется внутри другого класса: Код: c# 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.
И это всё, и никаких дополнительных библиотек. Есть некоторые тонкости - в базе широта и долгота хранится не формате float, и сущность не совпадает со строкой выборки, ну а в остальном, прекрасная маркиза... Что конерктно Вам не понятно в том, как получается выборка из базы? Получается она также как и у Вас: через OracleCommand, без дополнительных библиотек. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:48 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAА что проблемы с сетью? Почему правильно именно выбросить исключение? Его же кто-то должен будет обработать. А если ему по барабану на твои проблемы с сетью? Всё зависит от При любой возможности обойтись без исключений, конечно надо без них обходиться. Если ошибка определена логикой, например, валидация, отсутствие данных, отсутствие прав и т.д. Это нужно проверять и реагировать соответственно. Конечно зависит от. Но превращать исключительные ситуации в коды возврата, игнорируя механизмы исключений, которые дают больше информации об ошибке и месте её возникновения, считаю неправильным. Амн, какие ещё коды возврата? Выше давал ссылку на https://github.com/graphql-dotnet/graphql-dotnet/blob/master/src/GraphQL/Execution/ExecutionResult.cs Где там игнорируются механизмы, что дают больше информации об ошибке и месте её возникновения? Вот ещё пример: http://docs.couchbase.com/sdk-api/couchbase-net-client-2.4.7/html/bd17533f-918e-a167-40ae-89be88a341be.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:53 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAАмн, какие ещё коды возврата? Ну речь-то про них шла с начала топика :) skyANAВыше давал ссылку на https://github.com/graphql-dotnet/graphql-dotnet/blob/master/src/GraphQL/Execution/ExecutionResult.cs Где там игнорируются механизмы, что дают больше информации об ошибке и месте её возникновения? Клиент, осуществляющий доступ к API, мог бы инициировать своё исключение при получении структуры, у которой заполнены Errors. Но не обязан, это и правда зависит от того как это используется, и не запарит ли разработчиков при каждом чихе ковырять эту структуру на предмет наличия ошибок. skyANAВот ещё пример: http://docs.couchbase.com/sdk-api/couchbase-net-client-2.4.7/html/bd17533f-918e-a167-40ae-89be88a341be.htm Тоже самое. Тем более, лично я считаю, что надо разделять низкоуровневый API и высокоуровневый. Низкоуровневый возвращает OperationResult, высокоуровневый сразу нужный результат или исключение. Но так как, именно в этом случае, результат это больше, чем Value, то совместили. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 17:11 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttчто надо разделять низкоуровневый API и высокоуровневый. Низкоуровневый возвращает OperationResult Имеется в виду клиент API (н-р, Couchbase.NetClient.dll) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 17:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 16:42 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554058][21554058] >Почему нельзя? Дело в том, что 3-й слой является временным хранилищем информационных пакетов запросов/ответов. Сервисы 2-го уровня записывают пакеты запроса в хранилище 3-го уровня, используя вызов удаленного метода и ждут инфопакета результата запроса. Сервисы 4-го уровня (пул серверов приложений) забирают пакет из хранилища и реализуют обработку запроса и записывают пакет результата (ответа) на место пакета запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 18:43 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttПочему нельзя? Потому как сделал человек так, как сделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 18:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 16:48 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554069][21554069] >Что конерктно Вам не понятно в том, как получается выборка из базы? Где задаётся описание строки выборки, где задается описание сущности, где задаётся код отражения строки на сущность, где задаётся поток в котором выполняется обработка запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 18:54 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAВыше давал ссылку на https://github.com/graphql-dotnet/graphql-dotnet/blob/master/src/GraphQL/Execution/ExecutionResult.cs Где там игнорируются механизмы, что дают больше информации об ошибке и месте её возникновения?Клиент, осуществляющий доступ к API, мог бы инициировать своё исключение при получении структуры, у которой заполнены Errors. Но не обязан, это и правда зависит от того как это используется, и не запарит ли разработчиков при каждом чихе ковырять эту структуру на предмет наличия ошибок. skyANAВот ещё пример: http://docs.couchbase.com/sdk-api/couchbase-net-client-2.4.7/html/bd17533f-918e-a167-40ae-89be88a341be.htm Тоже самое. Тем более, лично я считаю, что надо разделять низкоуровневый API и высокоуровневый. Низкоуровневый возвращает OperationResult, высокоуровневый сразу нужный результат или исключение. Но так как, именно в этом случае, результат это больше, чем Value, то совместили.При каждом чихе ковырять? Если всё штатно работает, то ничего ковырять и не надо, а если возникла внештатная ситуация, считай исключение, то ковырять ровно столько же, что и при подходе с исключениями. Другой вопрос, а должна-ли как-то отражаться на работе приложения какая-либо аварийная ситуация в Couchbase, должно-ли оно об этом сигнализировать? ИМХО не должна, так как логика не зависит от Couchbase. А сигнализирует хелсчек. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 19:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 16:48 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554069][21554069] >Что конерктно Вам не понятно в том, как получается выборка из базы? Где задаётся описание строки выборки, где задается описание сущности, где задаётся код отражения строки на сущность, где задаётся поток в котором выполняется обработка запроса. Хорошо, давайте возьмём Ваш код и перепишем, реализуя для простоты интерфейс: Код: c# 1. 2. 3. 4.
Получаем в первом приближении: Код: c# 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. 40. 41. 42. 43. 44. 45.
И используем: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:14 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, метод Ask по сути одинаков для всех реализаций IQuery на базе OracleClient , так что выносим его в базовый класс OracleQuery плюс private методы делаем protected , и получаем: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Поправил: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Поправил: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAПри каждом чихе ковырять? Если всё штатно работает, то ничего ковырять и не надо, а если возникла внештатная ситуация, считай исключение, то ковырять ровно столько же, что и при подходе с исключениями. В смысле? Вот API при успешном результате возвращает некий объект, а при неуспешном null, это исключительная ситуация, если у меня таких вызовов очень много, код будет кишить if...else, я могу поставить обработку исключений, так как зачастую исключение означает, что ты мало что можешь сделать полезного, кроме как уведомить, записать в лог, и вернуть состояние к тому как было. Зачем мне этот шквал проверок, а не сломалось ли чего, если оно не должно ломаться. Опять таки, я говорю не про штатные ошибки, типа кривого ввода, или нарушение каких-то бизнес-правил. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttя могу поставить обработку исключений * на блок кода, а не для каждого вызова ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAДругой вопрос, а должна-ли как-то отражаться на работе приложения какая-либо аварийная ситуация в Couchbase, должно-ли оно об этом сигнализировать? ИМХО не должна, так как логика не зависит от Couchbase. А сигнализирует хелсчек. Сломаться может посередине многоступенчатого процесса. И что тогда? Опять таки, на стороне Couchbase может и не быть проблем, проблемы могут быть в некорректном коде вызова, который привёл к ошибке, очевидно это ошибка программиста. Он что сам себя страхует миллионом if...else? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 21:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 20:14 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554332][21554332] >И используем: Спасибо. Но остаюсь при своём. Потом, не нашёл определение Entity, а по сему код в private Entity ToResult(IDataRecord record) подвисает в воздухе. В моём варианте методы класса обслуживают все запросы хранимых процедур. И где обработка не штатных ситуаций, и в каком потоке работает Ваш код? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 21:15 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAИ используем: Код: c# 1. 2. 3. 4. 5.
ээхх... если не привить человеку потребность и понимание качественной разработки, то уже нет смысла учить и показывать как это делать. это не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 21:34 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 20:14 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554332][21554332] >И используем: Спасибо. Но остаюсь при своём. Потом, не нашёл определение Entity, а по сему код в private Entity ToResult(IDataRecord record) подвисает в воздухе. В моём варианте методы класса обслуживают все запросы хранимых процедур. И где обработка не штатных ситуаций, и в каком потоке работает Ваш код? Мда, могли бы и догадаться, что Entity - это Ваш тип row_Entity, просто подрихтованный. Обработка не штатных ситуаций? А где она у Вас? try catch и Message в переменную? Дак заверните, где Вам угодно. В каком потоке? Аналогично Вашему коду. Я прекрасно понимаю, что делает Ваш код. И пишу, что эту задачу решил бы иначе, чтобы ослабить зацепление, усилить связности и избежать проблем с сопровождением и тестированием. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 23:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAПри каждом чихе ковырять? Если всё штатно работает, то ничего ковырять и не надо, а если возникла внештатная ситуация, считай исключение, то ковырять ровно столько же, что и при подходе с исключениями. В смысле? Вот API при успешном результате возвращает некий объект, а при неуспешном null, это исключительная ситуация, если у меня таких вызовов очень много, код будет кишить if...else, я могу поставить обработку исключений, так как зачастую исключение означает, что ты мало что можешь сделать полезного, кроме как уведомить, записать в лог, и вернуть состояние к тому как было. Зачем мне этот шквал проверок, а не сломалось ли чего, если оно не должно ломаться. Опять таки, я говорю не про штатные ошибки, типа кривого ввода, или нарушение каких-то бизнес-правил.на практике код не кишит if...else, нет шквала проверок так как действительно мало, что можешь сделать, да и не требуется ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 23:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAИ используем: Код: c# 1. 2. 3. 4. 5.
ээхх... если не привить человеку потребность и понимание качественной разработки, то уже нет смысла учить и показывать как это делать. это не работает.думаю если бы проект не умер, то через годик другой он бы сам осознал, что представляет из себя его блестящий код Классика ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 23:44 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAЧто делать, что делать. Таски заводить на исправление Толку то. Это подход. Люди просто забили на обработку исключений. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 05:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAЧто делать, что делать. Таски заводить на исправление Толку то. Это подход. Люди просто забили на обработку исключений.Зачем их обрабатывать? Их надо логировать , по возможности где-то в одном месте. А обрабатывать, обычно, только с целью добавления диагностической информации . Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 06:50 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КЗачем их обрабатывать? Их надо логировать , по возможности где-то в одном месте. А обрабатывать, обычно, только с целью добавления диагностической информации .То есть пользователю причину знать необязательно? )) Еще раз - такие проблемы как а) кончилось место на диске б) файл с таким именем уже существует вместо выдачи какого-то сообщения для пользователя привели к введению приложения в ступор. Ну и какие логи должен смотреть рядовой пользователь? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 06:54 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAЧто делать, что делать. Таски заводить на исправление Толку то. Это подход. Люди просто забили на обработку исключений. Что значит забили? В предыдущих версиях Mozilla и TeamViewer обрабатывали, а потом забили? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 06:58 |
|
|
start [/forum/topic.php?fid=20&msg=39671313&tid=1399295]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 316ms |
total: | 571ms |
0 / 0 |