«catch» не может поймать исключение из библиотеки - PullRequest
0 голосов
/ 14 мая 2018

У меня есть этот метод в библиотеке:

#include <stdexcept>

mytype* myfunc()
{
  throw std::runtime_error("is uncatchable");
}

и это в int main() исполняемого процесса, который связывает библиотеку.

  try {  myfunc(); }
  catch(std::exception const& ex) { std::cout << "handled: " << ex.what() << std::endl;  }
  catch(...) {   std::cout << "something else..." << std::endl;  }

И это вывод:

terminate called after throwing an instance of 'std::runtime_error'
  what(): is uncatchable
Abort (core dumped)

Вопрос: Почему исключение не было поймано?

Я не управляю флагами моего компилятора (icc-11.X), также ОС не находится под моим контролем.

Список флагов компилятора:

-DLINUX -DLINUX_X64 -DGNU_SOURCE -fPIC -Wcheck -Wshadow -Wdeprecated -Wreturn-type -Wcomment -Wmissing-prototypes -Wp64 -Drcsid="__attribute__((used)) rcsid" 
-D__EXTENSIONS__ -D__STD_C__ -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -DNDEBUG  

__EXCEPTIONS определено.

Могут ли существовать настройки для Linux, которые приводят к этому?

Могут ли существовать настройки для компилятора, которые приводят к этому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...