Задать вопрос
@ebroker

C# стоимость обработки исключений?

В продолжение вопроса С# стоимость приведения типа?
Встречал мнения что обработка исключений в С# замедляет работу приложения. Сильно ли заметном это в реальном приложении?

Пример в ASP NET Core
[HttpPut]
public IActionResult Update(SomeDto someDto)
{
     Validate(someDto);
     var result = DoBuissness(someDto);
     return new OkObjectResult(result);
}


Что если метод Validate при нахождении ошибки при валидации будет генерировать исключение throw new MyValidationEcxeption(); которое будет обрабатываться глобальным обработчиком исключений в ASP NET Core и вернет нужный 400 статус код на этот запрос. То же самое с методом DoBuissness.

Второй вариант классическая реализация
[HttpPut]
public IActionResult Update(SomeDto someDto)
{
     var validationResult = Validate(someDto);
     if(string.IsNullOrEmpty(validationResult ))
         return new BadObjectResult(validationResult);
     var result = DoBuissness(someDto);
     return new OkObjectResult(result);
}

На сколько адекватная первая схема в отличии от классической второй?
Интересует в первую очередь скорость работы
  • Вопрос задан
  • 373 просмотра
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Микропетпроджект - домашнее облако homeCloud
ГЕНЕРАЦИЯ исключений - не дорогая. Поэтому первый и второй куски кода +- сопоставимы по скорости.
ОБРАБОТКА исключений - вот это уже затратно. Там идет разворот стека, всякое такое дерьмо... Для процессора - это именно ИСКЛЮЧИТЕЛЬНАЯ ситуация - ни о каком перфомансе там уже речи не идет - речь о сохранении работоспособности.
Но сравнить - нельзя, потому что непонятно что там и как во втором фрагменте обрабатывается.
Ответ написан
Комментировать
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
в общем случае, все сводится к стройности логики обработки ошибок. возможно вам стоит прочитать эту статью
https://habr.com/ru/post/339606/
у автора ряд публикаций, в тч он достаточно активно пишет и о C#
https://habr.com/ru/users/marshinov/posts/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы