捕获被零除异常
当尝试在 C 中除以零时,编译器或运行时不会自动抛出异常。该行为未定义,这意味着它可能会导致异常或其他不可预测的结果。
在提供的代码片段中:
int i = 0; cin >> i; try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
尝试除法时代码不会捕获任何异常除以零,因为在标准 C 中整数除以零不被视为异常。
要处理此问题,您需要手动检查除以零的条件并相应地抛出异常。 C 标准没有明确定义除零的异常,因此您可以选择抛出异常,例如:
这是一个修改后的代码片段,演示抛出被零除异常:
int intDivEx(int numerator, int denominator) { if (denominator == 0) throw std::overflow_error("Divide by zero exception"); return numerator / denominator; } try { i = intDivEx(5, 0); // Will throw an overflow_error exception } catch (std::overflow_error &e) { cerr << e.what() << endl; }
在此例如,intDivEx 函数检查是否被零除,如果遇到则抛出 std::overflow_error 异常。这允许您处理代码中的异常。
以上是如何正确处理 C 中的被零除错误?的详细内容。更多信息请关注PHP中文网其他相关文章!