Г
Грокаем C++
@grokaemcpp9.3K подп.
4.1Kпросмотров
44.0%от подписчиков
6 марта 2026 г.
Score: 4.5K
​​Бросаем дичь #новичкам В С++ есть исключения. Вы можете их любить или ненавидеть, но от этого не сбежать(почти). Обычно как происходит. Есть стандартный std::exception или любой кастомный базовый класс исключения my_exception::BaseException. У них куча наследников и вот вы их бросаете в подходящих ситуациях. Но это же С++: "Вы думали, что бросать можно только исключения? Пфф. Не смешите мои подковы и подержите мое пиво." Бросать можно почти все, что угодно, что можно считать объектом. Например так: throw 1; Бросаем число. А что, какие-то проблемы? Или вот так: throw nullptr; throw "This is the end!"; void panic() { std::cout << "PANIC!" << std::endl; } throw static_cast<void(*)()>(panic); // Указатель на функцию Кидаю указатели: на ничто, на c-style строку и на функцию. Не ожидали? Все легально. Самое уморительное, что можно кинуть даже лямбду. Ведь это всего лишь объект замыкания, ничего более: throw []{std::cout << "Things are going really bad...&#092;n"; }; Работает вся это свистопляска с раскруткой стека ровно так же, как и при работе с std::exception. Так что при споре с коллегами вы теперь можете бросаться в них всеми предметами, от стула до какашеклямбды. Благо знаете как. Be amazed. Stay cool. #cppcore
4.1K
просмотров
1250
символов
Нет
эмодзи
Нет
медиа

Другие посты @grokaemcpp

Все посты канала →
​​Бросаем дичь #новичкам В С++ есть исключения. Вы можете их — @grokaemcpp | PostSniper