Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
#include <iostream>
struct Error {};
struct NotFound : public Error {};
int main() {
try { throw NotFound{}; }
catch (const Error&) { std::cout << "Error"; }
catch (const NotFound&) { std::cout << "NotFound"; }
}Error
- Ждать
NotFound: обработчики проверяются сверху вниз, а не по лучшему совпадению, иconst Error&уже принимаетNotFound. - Ждать ошибку компиляции: на обработчик, который никогда не выполнится, компилятор только предупреждает, и программа собирается.
- Как переставить обработчики, чтобы для
NotFoundвыводилось своё сообщение? - Где в списке обработчиков ставят
catch (...)и почему?