引发异常并直接结束程序的自定义异常处理

custom exception handling that throws exception and ends the programme directly

本文关键字:程序 自定义 异常处理 结束 异常      更新时间:2023-10-16

下面是给定的代码。我想要的是,如果 throw 的条件匹配(这里除以零),程序应该在给出我想要的那种异常后直接终止(这里是"分母零!通常,这可以通过编写 throw 语句(无需编写 catch 语句)来完成,但它的结束方式令人不安,因为 IDE(在我的例子中是日食)显示一个弹出窗口,告诉"program_name.exe停止工作"在窗口 PC 中。有没有更好的方法可以在抛出异常后结束程序,该异常应该出现在输出窗口本身中,而不会出现这些看起来不寻常的弹出窗口?(可能是自定义异常格式会更好)

#include <iostream>
#include <string>
using namespace std;
double div(double num, double denom)
{
    double result = 0.0;
    try
    {
        if(denom == 0)
        throw "denominator zero!n";
        result = num/denom;
    }
    catch(const char* e)
    {
        cout<<e<<endl;
    }
    return result;
}


int main()
{
    double a = 5.0;
    double b = 0.0;
    cout<<div(a,b);

    return 0;
}

错误字符串输出到 std::cerr,然后

exit(0);

应该做这项工作。因为通常,如果返回代码与零不同,IDE 会发出此类警告。

这样做的方法是在main中编写一个try ... catch块。

int main() {
    double a = 5.0;
    double b = 0.0;
    try {
        std::cout << div(a,b);
    } catch(const char*msg) {
        std::cout << msg << 'n';
        return EXIT_FAILURE;
    }
    return 0;
}

现在,在div函数中,不要使用 try ... catch 。只需抛出异常。