Looking for .net Keywords? Try Ask4Keywords

.NET Framework Повторное исключение в блоке catch


пример

В блоке catch ключевое слово throw может использоваться самостоятельно, без указания значения исключения, для восстановления только что пойманного исключения. Повторное исключение позволяет исходному исключению продолжать цепочку обработки исключений, сохраняя стек вызовов или связанные данные:

try {...}
catch (Exception ex) {
  // Note: the ex variable is *not* used
  throw;
}

Общим анти-шаблоном является вместо этого throw ex , что приводит к ограничению зрения следующего обработчика исключения для трассировки стека:

try {...}
catch (Exception ex) {
  // Note: the ex variable is thrown
  //  future stack traces of the exception will not see prior calls
  throw ex;  
}

В общем случае использование throw ex нежелательно, так как будущие обработчики исключений, которые проверяют трассировку стека, смогут видеть вызовы еще до throw ex . Опуская переменную ex и используя ключевое слово throw исходное исключение будет «пузыряться» .