Похоже, что вы ищете значение режима (статистический режим), посмотрите на Документы Apache для статистических функций.
Способ сохранить отслеживание стека с помощью throw;
, Это допустимо также
try {
// something that bombs here
} catch (Exception ex)
{
throw;
}
throw ex;
, в основном похож на выдачу исключения от той точки, таким образом, отслеживание стека только пошло бы туда, где Вы выходите throw ex;
оператор.
Mike также корректен, предполагая, что исключение позволяет Вам передавать исключение (который рекомендуется).
Karl Seguin имеет большая запись на обработке исключений в его основы программирования электронной книги также, который является большим чтением.
Редактирование: Рабочая ссылка на Основы Программирования PDF. Просто ищите текст "исключение".
При выдаче нового исключения за начальным исключением, Вы сохраните начальное отслеживание стека также..
try{
}
catch(Exception ex){
throw new MoreDescriptiveException("here is what was happening", ex);
}
Когда Вы throw ex
, Вы по существу выдаете новое исключение и пропустите информацию об исходном отслеживании стека. throw
предпочтительный метод.
Эмпирическое правило должно постараться не Ловить и Бросать основное Exception
объект. Это вынуждает Вас быть немного более умными об исключениях; другими словами, у Вас должна быть явная выгода для SqlException
так, чтобы Ваш код обработки не делал чего-то не так с NullReferenceException
.
В реальном мире, хотя, ловя и регистрируясь основное исключение является также хорошей практикой, но не забывает обходить все это для получения любого InnerExceptions
, оно могло бы иметь.
Можно также использовать:
try
{
// Dangerous code
}
finally
{
// clean up, or do nothing
}
И любые выданные исключения будет пузыриться до следующего уровня, который обрабатывает их.
Я определенно использовал бы:
try
{
//some code
}
catch
{
//you should totally do something here, but feel free to rethrow
//if you need to send the exception up the stack.
throw;
}
, Который сохранит Ваш стек.
Вы всегда должны использовать "throw;" чтобы повторно выбросить исключения в .NET,
Обратитесь к этому, http://weblogs.asp.net/bhouse/archive/2004/11/30/272297.aspx
В основном MSIL (CIL) имеет две инструкции - «выбросить» и «повторно выбросить»:
В принципе, я могу понять причину, по которой "throw ex" переопределяет трассировку стека.