powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: обработка исключения в контроллере
25 сообщений из 406, страница 9 из 17
MVC: обработка исключения в контроллере
    #38771609
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruПричем это работает как с сервера, так и с клиента - про ремоут валидацию Хвост уже говорил. Единый центральный класс для валидирования моделей. Что еще нужно-то? Какие исключения?Ну как ты без запроса к БД определишь уникальность введённого значения?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771620
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ru, ну то есть отдельный класс, по экземпляру которого будет создан профиль пользователя.

Проверку уникальности логина ты кстати не реализовал. Но не в этом суть.

Теперь представь, что 100500 профилей пользователей прилетают из сторонней системы и их тоже нужно проверить, но процедуру регистрации проводить не надо, пользователи уже прошли регистрацию в сторонней системе.
Надо просто проверить и положить в базу.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771625
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кcodearticles.ruПричем это работает как с сервера, так и с клиента - про ремоут валидацию Хвост уже говорил. Единый центральный класс для валидирования моделей. Что еще нужно-то? Какие исключения?Ну как ты без запроса к БД определишь уникальность введённого значения?Ну он засунет в модель регистрации ссылку на репозиторий.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771642
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСобственно, это и обсуждается: как пробрасывать ошибку внутри слоёв сервиса и как передать ошибку от сервиса к клиенту.

Когда наконец ты поймёшь, что "ошибка" и "невалидные данные" -- это вещи кардинально разные, то всё станет на свои места. Для чего придумали исключения? Чтобы была возможность обработать нештатные ситуации. Для обработки данных, полученных от пользователя была придумана валидация. Если пользователь при регистрации ввёл некорректный логин -- это не является ошибкой, это штатная ситуация, которая предусмотрена логикой регистрации пользователя. Ошибка, это попытка вставить запись с некорректным логином, в нормальной ситуации до этого не должно доходить. Но и нельзя полностью полагаться на валидацию. Всегда надо дополнительно проверять данные в бизнес-логике.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771649
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Ну как ты без запроса к БД определишь уникальность введённого значения?Ну он засунет в модель регистрации ссылку на репозиторий.Ну будет обработка исключений на уровне валидатора, а не на уровне фильтра контроллера. Это ничего не меняет, внутри модели ошибку обычно удобнее пробрасывать исключением.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771659
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КСобственно, это и обсуждается: как пробрасывать ошибку внутри слоёв сервиса и как передать ошибку от сервиса к клиенту.

Когда наконец ты поймёшь, что "ошибка" и "невалидные данные" -- это вещи кардинально разные, то всё станет на свои места. Для чего придумали исключения? Чтобы была возможность обработать нештатные ситуации. Для обработки данных, полученных от пользователя была придумана валидация. Если пользователь при регистрации ввёл некорректный логин -- это не является ошибкой, это штатная ситуация, которая предусмотрена логикой регистрации пользователя. Ошибка, это попытка вставить запись с некорректным логином, в нормальной ситуации до этого не должно доходить. Но и нельзя полностью полагаться на валидацию. Всегда надо дополнительно проверять данные в бизнес-логике.
При проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД?

Это можно обсуждать вечно. В моём случае использование исключений существенно упрощает программу - поэтому я их использую. Как только появится вред от исключений - я сразу же откажусь от них.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771664
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВ моём случае использование исключений существенно упрощает программу - поэтому я их использую.Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь.
Алексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :)
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771668
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПри проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД?

Обязательно проверим. Закладывать ошибки, которые сыпятся из БД в работу бизнес-логики будет только совершенно на всю голову отмороженный дегенерат.

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

Переубеждать тебя не собираюсь. Хочется только отметить, что это крайне убогое и отвратительное решение для тех новичков, кто читают топик. Чтобы не повторяли за тобой.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771672
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей КВ моём случае использование исключений существенно упрощает программу - поэтому я их использую.Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь. Это используется на уровне фильтра [api]контроллера.
Алексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :)[/quot]И не такое бывало. :-)
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771676
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :)И не такое бывало. :-)
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771685
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КПри проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД?

Обязательно проверим. Закладывать ошибки, которые сыпятся из БД в работу бизнес-логики будет только совершенно на всю голову отмороженный дегенерат.И причины будут озвучены?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771693
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь. Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771700
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?Уникальность определяется по коду ошибки в SqlException при попытке сделать insert/update. А e-mail тут причём? Разумеется, валидность e-mail определяется не на уровне БД.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771701
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?Уникальность определяется по коду ошибки в SqlException при попытке сделать insert/update. А e-mail тут причём? Разумеется, валидность e-mail определяется не на уровне БД.Сори, невнимательно прочитал, секундочку... :-)
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771706
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИ причины будут озвучены?

Причины просты и банальны: целостность данных в БД ≠ целостность бизнес-данных. Это должен понимать даже джуниор, а опытному разработчику смешивать эти понятия непростительно, вплоть до увольнения без выходного пособия. Пусть идёт в говноконторы, коих как я вижу предостаточно.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771708
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?В этом случае используется это .
Код: c#
1.
2.
3.
4.
5.
6.
        static void AddDbCustomExceptionConverter()
        {
            var converter = new DbCustomExceptionConverter();
            converter.AddMessage("IX_sec_users_UserName", "Пользователь с указанным именем уже существует."); 
            LogExceptionParser.RegisterExceptionConverter(converter);
        }
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771711
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КИ причины будут озвучены?

Причины просты и банальны: целостность данных в БД ≠ целостность бизнес-данных.Из непонятого... Нужен список конкретных негативных эффектов.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771713
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВ этом случае используется это .
Код: c#
1.
2.
3.
4.
5.
6.
        static void AddDbCustomExceptionConverter()
        {
            var converter = new DbCustomExceptionConverter();
            converter.AddMessage("IX_sec_users_UserName", "Пользователь с указанным именем уже существует."); 
            LogExceptionParser.RegisterExceptionConverter(converter);
        }



Ты уж извини, но это ПОЛНЫЙ п....ц. Если бы у нас во время ревью обнаружилось бы что-то подобное, разраб уже завтра бы уже был выброшен на рынок труда, нах.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771714
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КНу как ты без запроса к БД определишь уникальность введённого значения?
Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель?

skyANAcodearticles.ru, ну то есть отдельный класс, по экземпляру которого будет создан профиль пользователя.
Проверку уникальности логина ты кстати не реализовал. Но не в этом суть.
Я тебе идею написал, а не реализацию конкретной задачи.

skyANAТеперь представь, что 100500 профилей пользователей прилетают из сторонней системы и их тоже нужно проверить, но процедуру регистрации проводить не надо, пользователи уже прошли регистрацию в сторонней системе.
Надо просто проверить и положить в базу.
Если в процессе участвуют n-систем, необходим единый шлюз. Например, REST сервис. В методе валидации модели (или через ремоут атрибут) у тебя будет на лету дергаться сервис, который будет делать проверку. В чем проблема?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771716
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КВ этом случае используется это .
Код: c#
1.
2.
3.
4.
5.
6.
        static void AddDbCustomExceptionConverter()
        {
            var converter = new DbCustomExceptionConverter();
            converter.AddMessage("IX_sec_users_UserName", "Пользователь с указанным именем уже существует."); 
            LogExceptionParser.RegisterExceptionConverter(converter);
        }



Ты уж извини, но это ПОЛНЫЙ п....ц. Если бы у нас во время ревью обнаружилось бы что-то подобное, разраб уже завтра бы уже был выброшен на рынок труда, нах.У меня это решение работает уже больше 10-и лет, ещё со времён C++ Builder. И пофиг мне на эстетические чувства каких-то там теоретиков.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771719
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruАлексей КНу как ты без запроса к БД определишь уникальность введённого значения?
Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель?Да я про модель в другом понимании. Ладно, проехали.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771724
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К, почитай тут (Application Architecture Guide v2):

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

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


Проектируйте стратегию проверки, руководствуясь целью ограничить, предотвратить и очистить злонамеренный ввод. Рассматривайте шаблоны и библиотеки сторонних производителей, которые могут помочь в реализации проверки. Определяйте бизнес-правила, обеспечивающие проверку, такие как границы транзакции, и реализуйте достаточно глубокую проверку, чтобы гарантировать выполнение этих правил.


Убедитесь, что правильно обрабатываете ошибки валидации и избегайте предоставления конфиденциальных данных в сообщениях об ошибках. Кроме того, обеспечьте протоколирование сбоев при проверке, что поможет при выявлении злонамеренных действий.


Какие нах исключения?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771725
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИз непонятого... Нужен список конкретных негативных эффектов.

Что за глупый вопрос? Возьмём того же многострадального пользователя. Очень часто вместо реального удаления записи используется поле с признаком удаления. Удалили пользователя с логином "mefazavr", значит логин должен освободиться. При наличии уникального индекса, логин останется "занятым".

Если бы у тебя был опыт, ты бы такие глупости бы не спрашивал. Никогда целостность БД не используется для валидации бизнес-данных. Никогда. Только в рядах совсем уж начинающих сопливых новичков. Но это обычно с опытом проходит.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771726
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruАлексей К, почитай тут (Application Architecture Guide v2):

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

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


Проектируйте стратегию проверки, руководствуясь целью ограничить, предотвратить и очистить злонамеренный ввод. Рассматривайте шаблоны и библиотеки сторонних производителей, которые могут помочь в реализации проверки. Определяйте бизнес-правила, обеспечивающие проверку, такие как границы транзакции, и реализуйте достаточно глубокую проверку, чтобы гарантировать выполнение этих правил.


Убедитесь, что правильно обрабатываете ошибки валидации и избегайте предоставления конфиденциальных данных в сообщениях об ошибках. Кроме того, обеспечьте протоколирование сбоев при проверке, что поможет при выявлении злонамеренных действий.


Какие нах исключения? "И пофиг мне на эстетические чувства каких-то там теоретиков" (ц) Я

зы: не читал.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771731
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?В этом случае используется это .
Код: c#
1.
2.
3.
4.
5.
6.
        static void AddDbCustomExceptionConverter()
        {
            var converter = new DbCustomExceptionConverter();
            converter.AddMessage("IX_sec_users_UserName", "Пользователь с указанным именем уже существует."); 
            LogExceptionParser.RegisterExceptionConverter(converter);
        }

О как. А скрипт создания индекса как оформлен?
...
Рейтинг: 0 / 0
25 сообщений из 406, страница 9 из 17
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: обработка исключения в контроллере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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