Выбор ответа Middle Исключения обновлено
Исключения как управление потоком
Вопрос
Сервис валидирует 10 000 строк импорта в секунду, и примерно половина невалидна. Валидатор бросает ValidationException на каждую ошибку. Что не так?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Исключения дорогие: для ожидаемых ошибок лучше Result или Try... Бросок исключения заметно дороже обычного возврата: создаётся объект, собирается стек, идёт поиск обработчика и раскрутка.
Варианты ответа
- Исключения дорогие: для ожидаемых ошибок лучше
ResultилиTry...правильный ответ - Ничего: исключения в .NET почти бесплатны, если их ловить рядом
- Исключения нельзя бросать чаще одного раза в секунду на поток
- Надо бросать базовый
Exception, а не свои типы: так быстрее
Разбор
Бросок исключения заметно дороже обычного возврата: создаётся объект, собирается стек, идёт поиск обработчика и раскрутка. Для ожидаемых, частых ошибок (валидация, парсинг) используют паттерн Try... или объект результата. Исключения оставляют для исключительных ситуаций. Тип исключения на скорость почти не влияет, ограничения частоты нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.