首页 > 后端开发 > C++ > 如何优雅地处理 C 中被零除异常?

如何优雅地处理 C 中被零除异常?

Mary-Kate Olsen
发布: 2025-01-04 02:54:42
原创
735 人浏览过

How to Gracefully Handle Divide-by-Zero Exceptions in C  ?

处理除零异常

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板