В этом вопросе Когда наконец будет запущен, если вы сгенерируете исключение из блока catch?
Это объясняет предостережение, что блок finally гарантированно будет выполняться, если исключение не будет обработано, что подтверждается этой документацией .
Для консольного приложения это просто, необработанное исключение убивает процесс.Однако в ASP.net мое понимание становится неясным.Необработанное исключение в ASP.net не уничтожает процесс и даже не перезапускает пул приложений; фактически, выполняется код структуры, так что сведения об ошибках отправляются по сети.Однако такие ошибки до сих пор обычно называют необработанными исключениями .
Что касается среды выполнения .net, то такое "необработанное исключение" в ASP.net фактически обрабатывается, так чтоЯ могу верить, что блок finally всегда будет выполняться?
Примечание. Я понимаю, что некоторые исключения, такие как StackOverflowException, всегда будут вызывать сбой пула приложений и, следовательно, вероятно, не будут выполнять блок finally, яменя не беспокоят эти крайние случаи.