Pergunta sobre exceções

Eu estava apenas brincando com exceções no visual studio e com o código acima, esperava que, uma vez que minha especificação de exceção não mencione nada, a exceção de exceção ruim deveria ter sido lançada. Mas o que realmente acontece é que a exceção é capturada pelo manipulador apropriado. Por quê então? Estou faltando alguma configuração ou algo no IDE?

Enquanto eu estava preso no mencionado acima, na verdade eu estava tentando encontrar resposta para a pergunta, se eu tiver uma especificação em branco de exceção, então o que é chamado? ainesperado() método ou um* bad_exception * será lançado e se ambos em que ordem? Aqui está o código.

 #include "stdafx.h"  
 #include <stdio.h>  
 #include <exception>  
 #include <iostream>  


using namespace std;

class A
{
    public:
        int i;
};

void myunexpected () 
{
    cerr << "unexpected called\n";
}

void doSomething(void) throw();
void doSomething(void) throw()
{
    A obj;
    obj.i= 100;
    throw obj;
}


int _tmain(int argc, _TCHAR* argv[])
{
    set_unexpected (myunexpected);
    try 
    {
        doSomething();
    }
    catch (bad_exception be) 
    {
        puts("Caught something");
    }
    catch (A &obj) 
    {
        puts("Caught Integer");
    }
    return 0;
}

questionAnswers(2)

yourAnswerToTheQuestion