Почему CLR повторно генерирует исключение ThreadAbortException?

Я получил следующий код из книги «Параллельное программирование в Windows»:

void Main()
{
    try
    {
        try
        {
            Console.WriteLine("Inside Main Method");
            Thread.CurrentThread.Abort();
        }
        catch(ThreadAbortException)
        {
            Console.WriteLine("Inside First Catch");
            // Trying to swallow but CLR throws it again....
        }
    }
    catch(ThreadAbortException)
    {
        Console.WriteLine("Inside Second Catch");
        //Thread.ResetAbort();
    }
}

Мне интересно узнать, почему CLR повторно генерирует исключение ThreadAbortException? И он продолжает делать это, пока я не вызову «Thread.ResetAbort ()». Во-вторых, существует ли какое-либо другое системное исключение, которое получает особую обработку от CLR?

6
задан Pawan Mishra 23 November 2011 в 06:02
поделиться