Por que o comportamento do bloco de manipulação de capturas (TException) difere no depurador após a instalação do Visual Studio 200

Considere o aplicativo de console abaixo, apresentando um método com um manipulador de captura genérico que captura exceções do tipoTException.

Quando esse aplicativo de console é criado com a configuração 'Debug' e executado no depurador do Visual Studio (ou seja, através do * .vshost.exe), isso falha, no Visual Studio 2005 e no Visual Studio 2008.

Acredito que esse problema surgiu apenas após a instalação do Visual Stuido 2008.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(Environment.Version);
        CatchAnException<TestException>();

        Console.ReadKey();
    }

    private static void CatchAnException<TException>()
        where TException : Exception
    {
        Console.WriteLine("Trying to catch a <{0}>...", typeof(TException).Name);
        try
        {
            throw new TestException();
        }
        catch (TException ex)
        {
            Console.WriteLine("*** PASS! ***");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Caught <{0}> in 'catch (Exception ex)' handler.", ex.GetType().Name);
            Console.WriteLine("*** FAIL! ***");
        }
        Console.WriteLine();
    }
}

internal class TestException : Exception
{
}

Sob as seguintes circunstâncias, o código se comporta conforme o esperado:

Se construído com a configuração 'Release', é bem-sucedid Se executado diretamente pelo * .exe, e não pelo Visual Studio (F5), ele é bem-sucedidSe anexar um depurador colocandoSystem.Diagnostics.Debugger.Launch(); na linha 1 deMain() ainda tem sucesso.

Quando o aplicativo de console é iniciado a partir do Visual Studio (2005 ou 2008) e, portanto, executado em ConsoleApplication.vshost.exe, ele falh

Aqui está minha saída para o caso de falha

2.0.50727.3068
Trying to catch a <TestException>...
*** FAIL! ***

Caught <TestException> in 'catch (Exception ex)' handler.
  Expected: <TestException>
    Actual: <TestException>
  Result of typeof(TException) == ex.GetType() is True

O que está causando essa falha peculiar?

questionAnswers(2)

yourAnswerToTheQuestion