Гарантируется ли выполнение блока finally для необработанного исключения в asp.net? - PullRequest
2 голосов
/ 23 апреля 2019

В этом вопросе Когда наконец будет запущен, если вы сгенерируете исключение из блока catch?

Это объясняет предостережение, что блок finally гарантированно будет выполняться, если исключение не будет обработано, что подтверждается этой документацией .

Для консольного приложения это просто, необработанное исключение убивает процесс.Однако в ASP.net мое понимание становится неясным.Необработанное исключение в ASP.net не уничтожает процесс и даже не перезапускает пул приложений; фактически, выполняется код структуры, так что сведения об ошибках отправляются по сети.Однако такие ошибки до сих пор обычно называют необработанными исключениями .

Что касается среды выполнения .net, то такое "необработанное исключение" в ASP.net фактически обрабатывается, так чтоЯ могу верить, что блок finally всегда будет выполняться?

Примечание. Я понимаю, что некоторые исключения, такие как StackOverflowException, всегда будут вызывать сбой пула приложений и, следовательно, вероятно, не будут выполнять блок finally, яменя не беспокоят эти крайние случаи.

1 Ответ

1 голос
/ 23 апреля 2019

Поскольку исключение обрабатывается далее вверх по стеку инфраструктурой asp.net, будет выполняться блок finally. Только то, что ваш код не обрабатывает исключение, не означает, что он не обработан.

...