LINUX.ORG.RU

Исключения и С++


0

0

Есть такая штука:

class FileException {
...
public:
FileException(const char*);
virtual void report() {cout<<"0\n";};
};

class FileCloseException : public FileException {
....
public:
FileCloseException(const char* f) : FileException(f) {};
void report() {cout<<"1\n";};
};

class FileWriteException : public FileException {
....
public:
FileWriteException(const char* fn, FILE* f) : FileException(fn)
{if (fclose(f)) throw FileCloseException(fn);};
void report() {cout<< "2\n";};
};

Собственно интересно что будет если я генерирую FileWriteException а оно в своем конструкторе сгенерирует FileCloseException? Как сработает такой блок:

try
{ bad_func();
} catch (FileWriteException& e) {
e->report();
} catch (FileCloseException& e) {
e->report();
}

Что я увижу на экране?

anonymous

а ты запусти да посмотри

jtootf ★★★★★
()

поймается FileCloseException.

An exception is considered caught when initialization is complete for the formal parameter of the corresponding catch clause, or when terminate() or unexpected() is entered due to a throw.

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

Не увижу! факт медицинский!

anonymous
()

Нет никаких "исключений" в С++(как и ООП, да, например) Если тебе не повезло и тебя не берут никуда кроме как жуниор плюсоебом, или просто ты в детстве ударился головой, и теперь пишешь на С++, забудь исключения, robust programming на С++ это геморрой и пустая трата времени.

anonymous
()
Ответ на: комментарий от anonymous

to anonymous:

Сразу видно проффесионального разработчика на Visual Basic for Applications)))

Walrus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.