#cpp #ооп #исключения
Почему не отлавливается исключение? class A { public: void SHOW() { std::cout << "A" << std::endl; throw; } }; int main() { try { A* ptr = new A; ptr->SHOW(); } catch (...) { } }
Ответы
Ответ 1
Какое исключение? Оператор throw без аргумента означает "сгенерировать перехваченное исключение заново" и применяется только в блоке catch. Если бы вы написали что-то типа throw 0 или throw "Error" - дело другое. А так... Вот ситуация, где ваш throw действительно сработает: class A { public: void SHOW() { std::cout << "A" << std::endl; throw; } }; int main() { try { A* ptr = new A; try { throw 5; } catch (...) { ptr->SHOW(); } } catch(int x) { cout << x << endl; } }
Комментариев нет:
Отправить комментарий