М
Маша С++
@masha_cpp107 подп.
262просмотров
8 мая 2025 г.
Score: 288
#база Какой из обработчиков catch сработает в таком коде? #include <iostream> class BaseException : public std::exception {}; class DerivedException : public BaseException {}; int main(int argc, char* argv<::>) { try { throw DerivedException(); } catch (const std::exception&) { std::cout << "std::exception" << std::endl; } catch (const BaseException&) { std::cout << "BaseException" << std::endl; } catch (const DerivedException&) { std::cout << "DerivedException" << std::endl; } return 0; } Не смотря на то, что блок с DerivedException выглядит наиболее подходящим, выберется первый блок catch, который сможет обработать исключение, то есть std::exception, потому что он является родителем DerivedException. Это значит, что наиболее специализированные исключения нужно располагать первыми, то есть порядок в коде должен быть обратным.
262
просмотров
925
символов
Нет
эмодзи
Нет
медиа

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

Все посты канала →
#база Какой из обработчиков catch сработает в таком коде? #i — @masha_cpp | PostSniper