Я работаю над проектом, который использует устаревшую библиотеку, которая использует определения функций, такие как
void func() throw(some_exception);
Поскольку спецификации динамических исключений удалены в C ++ 17, мне интересно, как решить эту проблему.
P0003R0 предлагает заменить
void func() throw(some_exception)
{
/* body */
}
с чем-то вроде
void func()
{
try
{
/* body */
}
catch(const some_exception&) {
throw;
}
}
Однако у меня нет доступа к исходному коду (только файлы заголовков).
Так что мне остается попытаться «исправить» определение функции в заголовке. Так, например Я мог бы написать
void func() noexcept(false);
Но когда функция выдает исключение, мое приложение по-прежнему завершается.
Как я могу изменить определение функции в заголовочных файлах или, возможно, настроить свой собственный проект (места, где я использую func
), чтобы получить то же поведение, что и throw(some_exception)
до C ++ 17?