Поток “Исключения ASP.NET прерывался” метод причин для выхода

В коде ниже, иногда someFunctionCall() генерирует исключение:

Поток прерывался.

Каким образом код в блоке кода B никогда не работает? ASP.NET начинает новую дискуссию для каждого вызова метода? Я был удивлен видеть, что, когда это исключение происходит, код в Блоке B никогда не работает, возвраты метода, и мое приложение продолжает бежать. Кто-то может объяснить это?

public void method()
{
     // CODE BLOCK A
     //...    

     try 
     {
         someFunctionCall(); // this call is generating thread abort exception
     }
     catch(Exception ex)
     {
         // log exception message
     }

    // CODE BLOCK B
    // ...    
}
21
задан Dale K 13 October 2019 в 22:15
поделиться

1 ответ

Это исключение ThreadAbortException ; это специальное исключение, которое автоматически повторно генерируется в конце каждого блока catch, если вы не вызываете Thread.ResetAbort () .

методы ASP .Net, такие как Response.End или Response.Redirect (если вы не передаете false ) генерирует это исключение, чтобы завершить обработку текущей страницы; ваш someFunctionCall () , вероятно, вызывает один из этих методов.

ASP .Net сам обрабатывает это исключение и вызывает ResetAbort для продолжения обработки.

34
ответ дан 29 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: