Как вы все, наверное, знаете, перехват и повторное создание исключения в c # таким образом является злом, поскольку уничтожает трассировку стека:
try
{
if(dummy)
throw new DummyException();
}
catch (DummyException ex)
{
throw ex;
}
Правильный способ перезапустить исключение без потери трассировки стека заключается в следующем:
try
{
if(dummy)
throw new DummyException();
}
catch (DummyException ex)
{
throw;
}
Единственная проблема с этим заключается в том, что я получаю много предупреждений компиляции: «Переменная 'ex' объявлена, но никогда не используется". Если у вас их много, полезное предупреждение может быть скрыто в мусоре. Итак, вот что я сделал:
try
{
if(dummy)
throw new DummyException();
}
catch (DummyException)
{
throw;
}
catch(AnotherException ex)
{
//handle it
}
Кажется, это работает, но я хотел бы знать, есть ли какая-либо отрицательная сторона повторного выброса исключения, которое не установлено для переменной. Как .net угрожает этому?
Заранее спасибо
Edit:
Я немного изменил свой код, чтобы прояснить, что я хотел сделать, так как некоторые неправильно поняли