Задать вопрос
@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);
}

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

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

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