Выбор ответа Junior Исключения спрашивают часто обновлено
throw против throw ex
Вопрос
Чем throw; отличается от throw ex; внутри catch (Exception ex)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: throw; сохраняет исходный стек вызовов, throw ex; его перезаписывает. throw; пробрасывает то же исключение дальше, и стек указывает на настоящее место ошибки. throw ex; бросает объект заново, стек начинается со строки в catch, и информация о первоисточнике теряется. throw; без аргумента допустим только…
Варианты ответа
- Разницы нет: это синонимы, компилятор генерирует один и тот же IL
throw;сохраняет исходный стек вызовов,throw ex;его перезаписываетправильный ответthrow ex;сохраняет исходный стек, аthrow;его очищаетthrow;можно использовать только вfinally, а не вcatch
Разбор
throw; пробрасывает то же исключение дальше, и стек указывает на настоящее место ошибки. throw ex; бросает объект заново, стек начинается со строки в catch, и информация о первоисточнике теряется. throw; без аргумента допустим только внутри catch. Если нужно бросить другое исключение, исходное передают в InnerException.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.