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;
}