Назад к задачам
Junior — Senior
24

Определение вывода программы с исключениями в деструкторе

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Укажите, какой текст будет напечатан в консоль после выполнения следующего кода.

#include <iostream>

using namespace std;

struct explode_exception : public std::exception {};
struct top_exception : public std::exception {};

struct Explosive
{
    ~Explosive()
    {
        throw explode_exception();
    }
};

int main()
{
    try
    {
        Explosive explosive;
        throw int(5);
    }
    catch (const std::exception&)
    {
        cout << "1";
        // обработчик 1
    }
    catch (top_exception&)
    {
        cout << "2";
        // обработчик 2
    }
    catch (explode_exception&)
    {
        cout << "3";
        // обработчик 3
    }
    catch (int&)
    {
        cout << "4";
        // обработчик 4
    }

    return 0;
}