2010-08-31 1 views
0

Этот вопрос касается библиотеки C++ для Windows, и мы используем Visual C++ в качестве нашего компилятора.Использование lib с включенной обработкой исключений в приложении, в котором обработка исключений отключена

Включить опцию компилятора обработки исключений в нашей библиотеке. Мы также используем throw/catch в нескольких местах.

Один из наших клиентов говорит, что они отключили возможность обработки исключений в своем приложении. Теперь вопрос в том, будут ли возникать какие-либо проблемы, если они используют нашу библиотеку с их приложением.

+2

Да, они будут испытывать проблемы. Но тогда они, вероятно, привыкли к этому. В конце концов, что делает std lib на ошибках, он должен генерировать исключения, когда исключения отключены? И по каким причинам вы должны отключать исключения, за исключением того, что ваш код не является безопасным для исключений? (И, как мы все узнали около десятилетия назад, написание кода таким образом приведет вас к темной стороне программирования. Пусть 'std :: exception' будет с вами!) – sbi

ответ

0

Если какие-либо исключения могут быть выпущены из вашей библиотеки, чем да, действительно, у них могут быть проблемы. Подумайте о том, была ли в вашей библиотеке исключение, которое не было обнаружено, а затем передано обратно в приложение. Поскольку приложение не создано с поддержкой исключений, оно не будет знать, как его обрабатывать и, скорее всего, будет вести себя некорректно. Если вам повезет, он будет терпеть крах, а не бесшумно проваливаться каким-то неясным образом.

Если вы поймаете все исключения внутри библиотеки и используете только коды возврата, чтобы сигнализировать о проблемах во внешнем мире, тогда все может закончиться нормально (обратите внимание, что это означает, что конструкторы открытых классов API не могут выбрасывать, а бросать - это только способ сообщить о проблемах).

Смежные вопросы