В С#, throw ex
почти всегда ошибочно, так как он сбрасывает трассировку стека.
Мне просто интересно, есть ли для этого какое-то реальное использование? Единственная причина, по которой я могу думать, это скрыть внутренности вашей закрытой библиотеки, но это действительно слабая причина. Кроме того, я никогда не встречался в реальном мире.
Изменить: Я имею в виду throw ex
, как в том, что бросает то же самое исключение, которое было поймано, но с пустым стеклом, как при неправильном выполнении. Я знаю, что throw ex должен существовать как конструктор языка, чтобы позволить бросать другое исключение (throw new DifferentException("ex as innerException", ex)
), и было просто интересно, есть ли когда-либо синтаксис, где throw ex
не ошибается.