Я просто играл с исключениями в визуальной студии и с приведенным выше кодом, я ожидал, что, поскольку в моей спецификации исключения не упоминается ничего, что должно было быть вызвано 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;
}
darn! я вижу код, выровненный правильно в предварительном просмотре, но не здесь! :( –
Используйте кнопку '101010' над редактором для форматирования кода. – sbi
@sbi: Спасибо! Попробуйте эту кнопку. Я попробовал, что на самом деле я использовал теги code & prev, и, как ни странно, в предварительном просмотре он отображал правильный отступ, но не в post. :( –