TGViewer
Уютное сообщество С++ разработчиков Уютное сообщество С++ разработчиков @cppturbo · 776 subscribers
Post #238 1.34K
Бросаем число
#новичкам

Мы привыкли, что исключения имеют какую-то свою иерархию и каждый класс имеет свое конкретное назначение в контексте отображения ошибки.

А что если мы попытаемся бросить что-то совсем несвязанное с иcключениями? Например, какой-нибудь тривиальный тип вроде int. Это вообще законно?

Абсолютно законно. В С++ можно бросать все, что угодно, кроме объектов неполных типов, абстрактных классов и указателей на неполный тип. Даже указатель на void можно.

Как и число.

Поймать число примерно также просто, как его бросить:

void foo() {
throw 1;
}

int main() {
try {
foo();
}
catch(int i) {
std::cout << i << std::endl;
}
}

// OUTPUT: 1


Это кстати один из любимых вопросов у интервьюеров.

"А можно ли кидать число вместо исключения?"

Теперь вы с полной уверенностью ответите "можно".

Но вот зачем это может быть нужно? Оставьте ваши мысли в комментариях

Make sense. Stay cool.

#interview #cppcore
  • 👍 1
More from @cppturbo
  1. Oct 4, 2026🤔 Как работает map и unordered_map? map использует структуру красно-черного дерева, подде…
  2. Sep 23, 2026photo post
  3. Sep 23, 2026🎥 Вебинар по C++: Паттерн многопоточного программирования «Producer-Consumer» Когда неско…
  4. Sep 23, 2026➕ Игра на C++ в консоли ➕
  5. Jul 7, 2026Что выведет следующий код и почему? #include <iostream> void foo(int a) { std::cout << "in…
  6. Jul 7, 2026Бросаем число #новичкам Мы привыкли, что исключения имеют какую-то свою иерархию и каждый…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →