处理除零异常
C 中的整数缺乏本机异常支持。因此,在提供的代码片段中:
int i = 0; cin >> i; // Input might be zero try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
当输入为零时,它将导致未定义的行为而不是触发异常。要处理这种情况,您需要显式执行检查并抛出异常。
在以下代码中,我们使用 intDivEx 方法处理除零异常:
#include <iostream> #include <stdexcept> inline int intDivEx(int numerator, int denominator) { if (denominator == 0) throw std::overflow_error("Divide by zero exception"); return numerator / denominator; } int main() { int i = 42; try { i = intDivEx(10, 0); } catch (std::overflow_error &e) { std::cout << e.what() << " -> "; } std::cout << i << std::endl; try { i = intDivEx(10, 2); } catch (std::overflow_error &e) { std::cout << e.what() << " -> "; } std::cout << i << std::endl; return 0; }
此代码在执行操作之前检查是否被零除。如果发生异常,它会打印一条错误消息。否则继续执行。
以上是如何优雅地处理 C 中被零除异常?的详细内容。更多信息请关注PHP中文网其他相关文章!