powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: обработка исключения в контроллере
6 сообщений из 406, страница 17 из 17
MVC: обработка исключения в контроллере
    #38775062
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какой бурное обсуждение данного вопроса. А за сим, раз тут собрались гуру Exceptions хотелось бы узнать про этот вариант реализации обработки ошибок. Таким образом, исключения собираются в таблице логов.

А обработка валидности данные делается так у DbContext:
Код: 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.
public override int SaveChanges() {
    try {
        return base.SaveChanges();
    }
    catch (DbUpdateException dbEx) {
        Debug.WriteLine("Error: {0}", dbEx.Message);
        ChangeTracker.Entries().ToList().ForEach(entry => entry.State = EntityState.Unchanged);
        var message = dbEx.InnerException == null ? dbEx.Message : GetErrorMessage(dbEx);
        var log = new Log(message) { UserName = "DbContext", StackTrace = dbEx.StackTrace };
        Logs.Add(log);
        return SaveChanges();
    }
    catch (DbEntityValidationException dbEx) {
        ChangeTracker.Entries().ToList().ForEach(entry => entry.State = EntityState.Unchanged);
        var sb = new StringBuilder();
        foreach (
            var validationError in
                dbEx.EntityValidationErrors.SelectMany(validationErrors => validationErrors.ValidationErrors)) {
            sb.AppendFormat("Property: {0} Error: {1}", validationError.PropertyName,
                validationError.ErrorMessage);

        }
        var log = new Log(sb.ToString()) { UserName = "DbContext", StackTrace = dbEx.StackTrace };
        Logs.Add(log);
        return SaveChanges();
    }
}



То есть все ошибки в том числе и ошибки валидации "падают" в таблицу Logs.

Какие казусы и подземные камни скрыты в таком подходе? Ошибки какого типа невозможно отследить таким образом?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38775068
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAМСУ, иди ты в задницу со своим штатным механизмом. Вот честно, утомил уже.
Качество твоих аргументов всё хлипче и хлипче. Мельчаешь, скиана...

skyANAТы сам его ни в одном проекте не использовал и рабочий код тебе слабо написать. И толку от твоего тро-ло-ло ноль.
Откуда тебе известно, что я его ни в одном проекте не использовал? Почему мне рабочий код написать слабо? Я тебе даже рецепт выкатил, который уже как 2 года пылится на сайте. А ты всё продолжаешь дурачка включать. Доколе?

skyANAТы вообще профессиональной разработкой ещё занимаешься, или уже на пенсии и ходишь сюда, чтобы какашками покидаться?
Какая разработка, акстись. Я профессиональный хирург, лечу таких вот как ты неофитов. Ну и заодно какашками кидаюсь, пока пациент под наркозом.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38775074
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruКакая разработка, акстись.Понятно, вопросов больше не имею.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38775082
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calabonga,

1. Что делает return SaveChanges(); в блоках catch?
2. Зачем на каждое из исключений создавать отдельный лог?
3. Ну и такой handling исключения я бы инкапсулировал в отдельный класс. Назовём его ExceptionHandler.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38775086
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А понял...

Код: c#
1.
return SaveChanges();

ни фига не делает, т.к. перед этим вызывается
Код: c#
1.
ChangeTracker.Entries().ToList().ForEach(entry => entry.State = EntityState.Unchanged);


Жесть какая-то.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38775100
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это тоже напрягает:
Код: c#
1.
var log = new Log(sb.ToString()) { UserName = "DbContext", StackTrace = dbEx.StackTrace };


Непосредственно в блоке catch ты должен явно указать, на каком уровне поймано исключение.

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


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