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++)
Re: Я бы на всякий случай взглянул бы в SEH. Для очистки со
1) В твою библиотеку передаётся callback
2) Библиотека вызывает callback
3) callback кидает исключение
Тут надо определиться, может ли callback кидать исключение. Вроде как у либы интерфейс plain C, так что никаких С++ исключений быть не должно. Но могут попробовать кинуть исключение SEH и скорее всего catch(...) его поймает.
Короче в любом случае надо определяться, могут ли callback'и кидать исключения, т. к. в этом случае в дизайне либы это должно учитываться.
Re: Я бы на всякий случай взглянул бы в SEH. Для очистки со
Я и сам понял это.
Обязательно добавлю комментарий в заголовочный файл plain-C интерфейса, что же ожидается от передаваемого обратного вызова и что лучше будет использовать лежащий в основе C++ интерфейс библиотеки.
Re: Я бы на всякий случай взглянул бы в SEH. Для очистки со
Re: Я бы на всякий случай взглянул бы в SEH. Для очистки со
(Anonymous) 2011-08-28 04:31 pm (UTC)(link)Это приводит к очень неприятным последствиям - в частности, catch(...) у MS перехватывает даже GPF (AKA segmentation fault), что вряд ли ожидает, гм, удивлённый и огорчённый программист.