Я просто играл с исключениями в визуальной студии и с приведенным выше кодом, я ожидал, что, поскольку в спецификации исключений ничего не сказано, должно быть сгенерировано bad_exception.Но на самом деле происходит исключение, которое перехватывается соответствующим обработчиком.Почему так?Я пропускаю какие-то настройки или что-то в IDE?
Хотя я застрял в вышеупомянутом, На самом деле я пытался найти ответ на вопрос: если у меня есть пустая спецификация исключения, что тогда вызывается?метод непредвиденный () или * bad_exception * будут выброшены, и если оба в каком порядке?Вот код.
#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;
}