Ух ты, я собирался голосовать Хуаном до тех пор, пока не увидел роль о том, чтобы никогда не использовать исключения.
Хорошо, во-первых, у Хуана все правильно. Если по какой-либо причине , вы окажетесь в ситуации двух исключений, гоняющихся друг за другом в стеке, C ++ просто поднимет свои руки и свой последний прием пищи и завершится ненормально. Таким образом, исключение из dtor является гарантией того, что у вас есть возможный путь к коду, который приводит к незапланированному ненормальному завершению, что, в общем, плохо. Если это то, что вы хотите , будьте откровенны с этим, позвоните, прервите или выйдите и покончите с этим.
Однако избегать исключений, исключая исключения, - плохой совет. Исключения являются действительно важным механизмом в C ++ для систем, которые будут устойчивыми и будут работать в течение длительного времени; это действительно единственный способ гарантировать, что вы можете справиться с ошибочными ситуациями без утечки ресурсов по всему полу.
Бывает, я работал на Маршалла Клайна, парня, который написал этот FAQ и преподавал C ++ из Книги FAQ; из-за этого я могу вам сказать, что вы немного неверно истолковали ответ. Он не говорит: «Ну и дела, это один случай, когда все будет хорошо, но я не собираюсь рассказывать вам об этом», - он говорит: «Я уверен, что если я скажу абсолютно и без исключения, с броска с дтор кто-нибудь когда-нибудь придумает один заурядный пример, который имеет смысл. Но я не знаю ни одного и не верю этому. Не пытайтесь делать это дома и проконсультируйтесь с адвокатом, никаких гарантий, явных или подразумеваемых. "