Entry tags:
- c++,
- concurrency,
- freesoftware,
- gcc,
- library,
- linux,
- ms windows,
- plain c,
- posix
Вопрос: Как дела с catch(...) в MS?
Думаю, многие из вас в курсе, что в NPTL механизм pthread_cancel() реализован с помощью исключений. Таким образом, следует избегать нейтрализации catch(...).
Знающие люди, а скажите, есть ли в мелко-мягкой среде какие-то подводные камни, из-за которых тоже следует избегать такой нейтрализации?
Заранее благодарен! :-)
Update: Обратные ссылки: alextutubalin: Об исключениях (C++)
Знающие люди, а скажите, есть ли в мелко-мягкой среде какие-то подводные камни, из-за которых тоже следует избегать такой нейтрализации?
Заранее благодарен! :-)
Update: Обратные ссылки: alextutubalin: Об исключениях (C++)
no subject
или хотя бы гнать ссаными тряпками :)
потому что если где-то что-то сегфолтится и нейтрализуется этим кэтчем, то узнаешь ты об этом как правило слишком поздно
Re: за catch( ... ) без rethrow вообще надо убивать
Что сделаешь, если у тебя реализация на Си++, а тебя просят спрятать это за обычным Си, требуя, чтобы никаких исключений не вырывалось наружу?
Да, есть некоторый набор исключений самой библиотеки.
Но она использует, например, STL.
no subject
делаешь catch( std::exception& e ) и все
можешь даже после этого в сишный интерфейс какую-нибудь строковую ошибку вернуть (по e.what() выдастся const char *
Re: в чем проблема? все исключения STL унаследованы от std::e
Спасибо!
no subject
Re: сделай проверку, e.what() вполне может вернуть NULL
А тип исключения, действительно, может многое сказать, ведь базовый класс STL исключений содержит виртуальную таблицу, а значит, можно получить run-time type infromation - люблю этим пользоваться в этих случаях.
Re: сделай проверку, e.what() вполне может вернуть NULL
Re: сделай проверку, e.what() вполне может вернуть NULL
"А вы так - не делайте!"
Re: сделай проверку, e.what() вполне может вернуть NULL
Re: сделай проверку, e.what() вполне может вернуть NULL
У меня вызовы - кошерные? Кошерные!
Библиотека с остальным кодом в исполняемый модуль собралась? Собралась!
Что ты ещё от меня хочешь?
А прострелить себе ногу - я тебе могу и без исключений и в одной среде способов предложить; те же встроенные конструкторы и невстроенные деструкторы: создавай одни в одной библиотеке в отладке, а разрушай - в другой в релизе, ну или что-то в этом роде.
Re: сделай проверку, e.what() вполне может вернуть NULL
Re: сделай проверку, e.what() вполне может вернуть NULL
Да, мне и без этих мыслей - хватает, чем задуматься.
Но ты, эта, держи меня в тонусе, продолжай писать... ;-)
no subject
Re: Идея с catch(std::exception &), кстати, подходит.
Всем спасибо!
Я должен был бы сам догадаться и не тревожить общественность по пустякам...
no subject
конструкторы вообще не должны ничего кидать, это когда-то было debatable, но в итоге порешали что ну его нафиг, но это к вопросу мало относится
Re: конструкторы вообще не должны ничего кидать, это ког
Деструкторы - да, согласен, не должны.
no subject
конструкторы могут, деструкторы не могут