Это не вопрос C ++, потому что в стандартном C ++ этого сделать невозможно.
В Windows это создает Структурную обработку исключений исключение.
См. этот пример от MSDN:
__try
{
*pResult = dividend / divisor;
}
__except(GetExceptionCode() == EXCEPTION_INT_DIVIDE_BY_ZERO ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
return FALSE;
}
Хотя это непереносимо и специфично для Windows.Последнее, что я знал, что GCC также не поддерживает его, даже в Windows.
Если вы задаете более широкий вопрос, то, как он работает, ваш ЦП будет генерировать прерывание, когда вы делите на ноль.Ядро Windows обрабатывает это и передает его вашему процессу, давая вам возможность справиться с этим.Если вы не справитесь с этим, ваш процесс умрет.В операционных системах типа Unix то же самое будет сохраняться, но это, вероятно, приведет к появлению сигнала.Я не уверен, какой именно.
Я бы сказал, что если вы хотите написать переносимый код C ++, то, вероятно, лучше проверять деление на ноль в программном обеспечении, а не полагаться на аппаратные средства для генерации ошибки и для ядра ОС длядоставить его вам через какой-нибудь непереносимый механизм.