|
Null VS Exception
|
|||
---|---|---|---|
#18+
как правильно делать, вернуть null или выбросить исключение? например здесь Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 09:50 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Зависит от того, плановая это ситуация или исключительная. Но много зависит и от окружения - как оно построено. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 09:56 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
listtoview, возвращать null очень плохой стиль кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 09:57 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
vb_sub возвращать null очень плохой стиль кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 09:58 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
vb_sub listtoview, возвращать null очень плохой стиль кода. Почему? например это поиск если ничего не найдено, зачем возвращать объект? логичнее вернуть ничего не? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 10:48 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
listtoview, потому что если ты ждешь из функции объект Book, и будешь возвращать null, то при обращении к book.Id у тебя в runtime вылетит ошибка. ее тяжело отловить. если еще и другие люди по проекту работают, то к проблемам такой подход приведет. можно результат операции возвращать успешно нашли или нет, или паттерном Пустой объект воспользоваться. возвращать объект Book, но в нем завести какой то признак, который обозначает что объект пустой. потом написать функцию IsEmptyObject, которая на book.IsEmptyObject() вернет true когда объект в базе найден не был ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 11:19 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Как вариант можно использовать следующую обертку, которой пользуюсь для ответа из API, но как обертка для результата метода тоже подойдет. Код: javascript 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. 46. 47. 48. 49. 50. 51. 52. 53. 54.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 12:54 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
listtoview Почему? например это поиск если ничего не найдено, зачем возвращать объект? логичнее вернуть ничего Вот смотри. Допустим ты хочешь получить объект по id, при этом по твоей бизнес-логике объекты никогда не удаляются из этой таблицы. Таким образом, если id получен валидным путем, то он должен быть валидным и объект обязан быть найден. Если не найден, то это действительно исключение (например злой хакер ручками подменил id в запросе), ты такую ситуацию не ожидаешь. Что касается поиска - обычно поиск по каким-то критериям возвращает массив. Если поиск ничего не нашел, то он возвращает пустой массив, так что тут о null речь не идет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 13:43 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Может быть еще такая ситуация, что объект существует, но у пользователя на него нет прав. Тут возвращать объект нельзя, но и null возвращать некорректно. Можно наплодить и выбрасывать специфические исключения для разных ситуаций, но это не самый удобный путь, удобнее возвращать Result, в котором можно классифицировать причину. К примеру есть сообщения, которые нельзя показывать пользователю (только в логи писать или показывать админу), а есть которые для пользователя предназначены. В Result-е ты можешь сделать соответствующие поля. В общем, зависит во-многом от того, как ты строишь свою архитектуру. Все, что я сказал - не догма, но в любом случае лучше принять и придерживаться единого стиля. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 13:48 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
listtoview как правильно делать, вернуть null или выбросить исключение? например здесь Код: c# 1. 2. 3. 4.
Именно этот код должен вернуть null, а не падать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 14:04 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Можешь еще вот этот срач почитать Исключения vs коды возвратов там немножко про другое, ну так, для погружения в вопрос ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 14:29 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Дмитрий Мух listtoview как правильно делать, вернуть null или выбросить исключение? например здесь Код: c# 1. 2. 3. 4.
Именно этот код должен вернуть null, а не падать. Ты что, белены объелся? :) это же не SingleOrDefault Single вернет найденный элемент, если в последовательности он есть и он только 1, если его нет или он не 1 бросит исключение SingleOrDefalut вернет найденный элемент, если он только 1, если элемент не найден, то вернет null First - вернет первый найденный элемент или бросит исключение FirstOrDefault - вернет первый найденный элемент или null без исключений ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 14:36 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Roman Mejtes Ты что, белены объелся? :) это же не SingleOrDefault Данная реализация понятно, что исключение выдаст ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 14:42 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
И в продолжение - в данный коде действительно не стоит выбрасывать исключение, потому что это исключением смешается с возможными исключениями от БД (например транспортного уровня или блокировки), и потом придется эти исключения где-то выше разделять на причины. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 14:45 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
listtoview, если не найдено -- 404 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 17:08 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Shocker.Pro Roman Mejtes Ты что, белены объелся? :) это же не SingleOrDefault Данная реализация понятно, что исключение выдаст ) я написал о том, как этот код должен бы себя вести на самом деле, а не как он ведёт себя сейчас ведь наверняка мало кто ожидает, что метод с сигнатурой Код: c# 1.
кинет исключения, если нет записи о книге с указанным идентификатором это примерно как ожидать, что запрос Код: sql 1.
с**а, выкинет исключение ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 18:12 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
hVostt если не найдено -- 404 если нет доступа - 403 и мы возвращаемся к Shocker.Pro ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 18:14 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
И вообще предлагаю топика ТС-а нещадно удалять, пока он не научится вопросы задавать... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 18:18 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
hVostt если не найдено -- 404 Дмитрий Мух если нет доступа - 403 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 18:26 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Дмитрий Мух И вообще предлагаю топика ТС-а нещадно удалять, пока он не научится вопросы задавать... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 18:26 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Shocker.Pro hVostt если не найдено -- 404 Дмитрий Мух если нет доступа - 403 1. с чего это вдруг именно репо? 2. и почему это доступ должен проверятся именно на уровне контроллера? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 18:28 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Shocker.Pro Дмитрий Мух И вообще предлагаю топика ТС-а нещадно удалять, пока он не научится вопросы задавать... Вопрос: listtoview как правильно делать, вернуть null или выбросить исключение? например здесь Ответ: например здесь - null, например там - исключение. Вот ответь мне: ТС-а "например здесь" интересует, или вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 18:32 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Не удивлюсь, если вдруг окажется, что ТС открыл для себя поведение метода Single и из-за этого и задался вопросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 18:39 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Дмитрий Мух hVostt если не найдено -- 404 если нет доступа - 403 и мы возвращаемся к Shocker.Pro Мне к этому приходится возвращаться довольно часто при интеграции со всякими легаси и поделками надмозгов. Особенно за 200 ОК, который содержит детали ошибок внутри -- просто кол в попу, и провернуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 23:48 |
|
Null VS Exception
|
|||
---|---|---|---|
#18+
Кстати, возвращаясь к теме топика, на который сослались... skyANA Всё это фигня... Следует возвращать OperationResult да и вообще писать в функциональном стиле Показало себя на реальном боевом проекте как полнейшее фуфло. Никакого профита, головняк, и почва для генерации говнокода на ровном месте. Пока в C# не будет DU, не стоит заниматься подобным извращением. Не рекомендую. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 23:57 |
|
|
start [/forum/topic.php?fid=18&msg=39986903&tid=1354654]: |
0ms |
get settings: |
10ms |
get forum list: |
9ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 407ms |
0 / 0 |