LINUX.ORG.RU

C++/exceptions - деление на ноль не ловиццо, почему?


0

0

#include <iostream>
#include <exception>

using namespace std;

void
unexpectedHandler ()
{
  cout << "Unexpected!" << endl;
}

void
terminateHandler ()
{
  cout << "Terminate!" << endl;
}

int
main (int argv, char *argc[])
{
  int a;
  int b;
  try
  {
    if (argv < 3)
      throw exception ();
    a = atoi (argc[1]);
    b = atoi (argc[2]);
  }
  catch (exception e)
  {
    a = 2;
    b = 0;
  }

  set_unexpected (unexpectedHandler);
  set_terminate (terminateHandler);

  try
  {
    cout << a / b << endl;
  }
  catch (...)
  {
    cout << "Shit happens!" << endl;
  }

  return 0;
}
★★

А в cl.exe ловиццо

imp ★★
() автор топика

Ладно, почему понятно...

Другой вопрос - как сделать чтобы ловилось в g++ ?

imp ★★
() автор топика
Ответ на: комментарий от omerm

лови ексепшн деления на нолб и бросай после этого свой страшный экспешн, который уйдет в глобальный хэндлер

eldubalof
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.