Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... В нём отображается MessageBox, сделанный через Bootstrap-ный modal.А если я хочу не MessageBox, а другое поведение?Очевидно, придётся переписать содержимое класса Log. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну где, где... Вот: 16657497 :)Ну это же не запрещает, если надо. :-)Ахаха, Алексей в своём репертуаре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:15 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... А если я хочу не MessageBox, а другое поведение?Очевидно, придётся переписать содержимое класса Log. :-)Переписать? Как всё запущено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
"визуализация полученных данных на клиенте, как мы понимаем, может быть любая", если переписать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:17 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
свежий взгляд, чо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Очевидно, придётся переписать содержимое класса Log. :-)Переписать? Как всё запущено.А как надо? Чтобы оно само написалось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Переписать? Как всё запущено.А как надо? Чтобы оно само написалось? Ну хотелось бы как-то гибко в зависимости от модели прозрачно использовать ту, или иную реализацию. А не либо MessageBox, либо переписать :) И не хотелось, чтобы response parser вообще что-то знал о UI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:27 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... А как надо? Чтобы оно само написалось? Ну хотелось бы как-то гибко в зависимости от модели прозрачно использовать ту, или иную реализацию. А не либо MessageBox, либо переписать :)Надо будет - сделаем. Пока не надо. skyANAИ не хотелось, чтобы response parser вообще что-то знал о UI.Он про UI ничего и не знает. Он знает только про класс Log, который в любой момент может стать интерфейсом, внутри класса Log можно сделать через IoC механизм хранилищ - тут много способов решения. Главное, что абстракция в виде класса Log есть, остальное всё разрулится по мере необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... Я спрашиваю. Ответить можешь?Странный вопрос, впрочем, да, есть. Зачем, если есть ExceptionFilterAttribute? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 20:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей Кпропущено... Странный вопрос, впрочем, да, есть. Зачем, если есть ExceptionFilterAttribute?Чтобы обрабатывать по месту при необходимости. Впрочем, чаще есть необходимость генерации исключения: Код: c# 1. 2. 3. 4. 5. Вот она, ошибка прикладного уровня, которая стала для некоторых открытием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 20:17 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей Кпропущено... Странный вопрос, впрочем, да, есть. Зачем, если есть ExceptionFilterAttribute?Вдогонку: я оперирую понятиями "чаще" и "реже", а не "бывает" и "не бывает", как некоторым хотелось бы. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 20:21 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну хотелось бы как-то гибко в зависимости от модели прозрачно использовать ту, или иную реализацию. А не либо MessageBox, либо переписать :)Надо будет - сделаем. Пока не надо. skyANAИ не хотелось, чтобы response parser вообще что-то знал о UI.Он про UI ничего и не знает. Он знает только про класс Log, который в любой момент может стать интерфейсом, внутри класса Log можно сделать через IoC механизм хранилищ - тут много способов решения. Главное, что абстракция в виде класса Log есть, остальное всё разрулится по мере необходимости.Да, да, да... "придётся переписать" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 21:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... Зачем, если есть ExceptionFilterAttribute?Чтобы обрабатывать по месту при необходимости. Впрочем, чаще есть необходимость генерации исключения: Код: c# 1. 2. 3. 4. 5. Вот она, ошибка прикладного уровня, которая стала для некоторых открытием.И в чём смысл такого InfoException? Чисто чтобы в фильтре по типу отличить? Хорошо вам в корпоративе. Не надо о локализации думать и о том, что неплохо бы данные какие добавить, validatione rule к примеру, который был нарушен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 21:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К, а вот если не пользователь, а сервис запулит пачку данных, среди которых будет парочка невалидных объектов, то он также цинично будет послан на фиг: "Нельзя A больше B. До свидания!"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 21:26 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КЧтобы обрабатывать по месту при необходимости. Впрочем, чаще есть необходимость генерации исключения: Код: c# 1. 2. 3. 4. 5. Вот она, ошибка прикладного уровня, которая стала для некоторых открытием. На кой хер использовать исключения для реализации прикладной логики? Мало того, так делать -- это отвратительный, мерзкий тон, так ещё и путаешь людей, которые могут сопровождать этот код: ведь оказывается InfoException это вовсе не ошибка, а контейнер для проброса сообщения "наверх". Фу-фу-фу. Можешь считать, что это норм, но, как говориться, писать тухлый говнокод не запретишь. Селяви. А то мозг тут нам выносил, теперь-то всё понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 22:46 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAИ в чём смысл такого InfoException? Чисто чтобы в фильтре по типу отличить? Об этом уже Рихтер писал не однократно. Новички и неопытные сопливые программисты часто пытаются заюзать исключение, как контейнер для проброса информации сквозь слои инфраструктуры, ведь зачем использовать мозг и творить внятную архитектуру? Говорилось миру не однократно, это касается не только C#, но и С++ и Java и других платформ: не используйте исключения для реализации логики, как контейнер для переноса информационных сообщений, как способ для сообщений "сквозь слои", это средство для обработки ошибок, но не для логики (абсолютно не важно какого уровня, топ или лоу). Всякие InfoException -- это просто курам на смех. Вот находятся же умники... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 22:51 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAИ в чём смысл такого InfoException? Чисто чтобы в фильтре по типу отличить? Об этом уже Рихтер писал не однократно. Новички и неопытные сопливые программисты часто пытаются заюзать исключение, как контейнер для проброса информации сквозь слои инфраструктуры, ведь зачем использовать мозг и творить внятную архитектуру? Говорилось миру не однократно, это касается не только C#, но и С++ и Java и других платформ: не используйте исключения для реализации логики, как контейнер для переноса информационных сообщений, как способ для сообщений "сквозь слои", это средство для обработки ошибок, но не для логики (абсолютно не важно какого уровня, топ или лоу). Всякие InfoException -- это просто курам на смех. Вот находятся же умники...Теперь давай список негативных эффектов от предлагаемого решения, конкретно, по пунктам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 05:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Чтобы обрабатывать по месту при необходимости. Впрочем, чаще есть необходимость генерации исключения: Код: c# 1. 2. 3. 4. 5. Вот она, ошибка прикладного уровня, которая стала для некоторых открытием.И в чём смысл такого InfoException? Чисто чтобы в фильтре по типу отличить?Да. skyANAХорошо вам в корпоративе. Не надо о локализации думатьВместо строковой константы в исключении указать ID сообщения конечно-же сложно. skyANAи о том, что неплохо бы данные какие добавить, validatione rule к примеру, который был нарушен.Добавить свойств к классу исключения тоже можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 05:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей К, а вот если не пользователь, а сервис запулит пачку данных, среди которых будет парочка невалидных объектов, то он также цинично будет послан на фиг: "Нельзя A больше B. До свидания!"?Всё зависит от технического задания. Очевидно, логику можно написать как угодно. Если речь идёт о сохранении не в одной транзакции, соглашусь, результат, наверное, лучше вернуть не исключением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 05:39 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КТеперь давай список негативных эффектов от предлагаемого решения, конкретно, по пунктам. Проверка данных на корректность решается с помощью механизмов валидации, коих что ASP.NET MVC, что в ASP.NET WebAPI навалено плотной кучей, также легко и непринуждённо прибивается к JavaScript, и даже к твоему любимому knockout. Недопустимые операции не должны допускаться, а не осыпать пользователя тупыми проклятьями "не то нажал!!!", "не так сделал!!!" -- истеричные программы, напрямую отражающие сущность программиста должны прямиком направляться в сад. Как это делается? Кнопочки дисейблятся или скрываются, чекбоксы, радиобатоны, группы контролов, ссылки, поля и другие неведыме штуковины не должны давать пользователю нарваться на истеричный мат. Что ещё? Нарушения целостности данных, например, дублирование уникального индекса поля должно решаться валидацией, а не исключением. Арифметические выражения, и деления на нуль -- валидация. Загрузка неправильных файлов и изображений -- валидация. И т.д. Что в остатке? Реальные ошибки-исключения, которые были непредвидены, не учтены или их тупо нельзя было предвидеть на момент разработки. А это значит, что пользователя надо ласково оповестить, что программер натупил и очень-очень скоро руководство надаёт тому по шее, чтобы он исправел багу, а не показывать пользователю "расшифрованное" сообщение об ошибке -- это совершенно точно ничем не поможет пользователю, только резко ухудшит его настроение. В отдельных случаях это может напрямую сказаться на финансовых показателях компании. Никакого смысла в анализе "типа" ошибки здесь нет, так как ошибки поэтому и называются ошибками, что нарушают логику программы. А закладывать ошибки в логику программы будет только дундук. Превращать исключения в средство доставки сообщений пользователю -- идиотизм чистой воды. Если этот идиотизм сам не излечится со временем, с опытом, поможет только, как это модно сейчас говорить в определённых кругах, люстрация Вот ещё пример. Пользователь жмёт на чужой комментарий "Ответить", и долго, вдумчиво выплёскивает то, что у него накопилось к оппоненту. Но в это время оппонент решил, что человечество к его комментарию пока ещё не готово и удаляет своё творение. Пользователь жмёт "Отправить" и... получает матюки в ответ, дескать ты чё такой тупой, пытаешься отвечать на удалённые комментарии. Хотя можно было предложить пользователю создать новый комментарий с отправленным текстом вместо ответа или сохранить в черновики, или отправить личное сообщение... Это невозможно никак сделать с твоим подходом. Никак. Ошибки надо ловить там где их можно (и нужно) обработать. А не рисовать некий универсальный подход, которым можно только задницу подтереть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 08:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... Зачем, если есть ExceptionFilterAttribute?Вдогонку: я оперирую понятиями "чаще" и "реже", а не "бывает" и "не бывает", как некоторым хотелось бы. :-) За такое нужно минимум ведро на голову одень, взять палочки и начать барабанить по ведру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 10:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КТеперь давай список негативных эффектов от предлагаемого решения, конкретно, по пунктам. Самый жирный гвоздь в твоё изобретение - нерасширяемое решение, которое нельзя ни с чем интегрировать. Нужно будет писать всяческие обертки и костыли для трансляции твоего исключения во внятный вид и для каждого случая. Тот же unobtrusive уже идет лесом. Для таких телодвижений есть универсальные IDataErrorInfo и IValidatableObject, которые можно использовать хоть в сильверлайте космосе. И самое главное - ты всеми будешь понят и распознан, не надо ничего писать в нагрузку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 10:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttКнопочки дисейблятся или скрываются, чекбоксы, радиобатоны, группы контролов, ссылки, поля и другие неведыме штуковины не должны давать пользователю нарваться на истеричный мат.Типичная ошибка профессионального дилетанта в области UI: кнопочка задизейблена, пользователь сидит в обнимку с хрустальным шаром и гадает, почему кнопка недоступна. Так нужно делать только в самых очевидных случаях, которых не много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей КТеперь давай список негативных эффектов от предлагаемого решения, конкретно, по пунктам. Самый жирный гвоздь в твоё изобретение - нерасширяемое решение, которое нельзя ни с чем интегрировать. Нужно будет писать всяческие обертки и костыли для трансляции твоего исключения во внятный вид и для каждого случая. Тот же unobtrusive уже идет лесом. Для таких телодвижений есть универсальные IDataErrorInfo и IValidatableObject, которые можно использовать хоть в сильверлайте космосе. И самое главное - ты всеми будешь понят и распознан, не надо ничего писать в нагрузку.Причём тут валидация в UI на клиенте? Мы не об этом сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:15 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttВот ещё пример. Пользователь жмёт на чужой комментарий "Ответить", и долго, вдумчиво выплёскивает то, что у него накопилось к оппоненту. Но в это время оппонент решил, что человечество к его комментарию пока ещё не готово и удаляет своё творение. Пользователь жмёт "Отправить" и... получает матюки в ответ, дескать ты чё такой тупой, пытаешься отвечать на удалённые комментарии. Хотя можно было предложить пользователю создать новый комментарий с отправленным текстом вместо ответа или сохранить в черновики, или отправить личное сообщение... Это невозможно никак сделать с твоим подходом. Никак. Ошибки надо ловить там где их можно (и нужно) обработать. А не рисовать некий универсальный подход, которым можно только задницу подтереть.Ну с чего ты взял, что это невозможно? Всё возможно, просто ты не знаешь как. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:16 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38767339&tid=1356943]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 350ms |

| 0 / 0 |
