如何在C++中使用错误控制函数?

How to use of error control functions in C++?

我的源代码如下:

#include <QtCore/QCoreApplication>
#include <stdio.h>
#include <errno.h>



using namespace std;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    printf("salam\n");
    int num = 10;
    int ss;
    ss = num / 0;
    printf("%s\n",strerror(errno));

    return a.exec();

}

我想为 "divide to zero" 显示我的 error 字符串! 但输出是:

salam no such file or directory

请帮助我如何在 C++ 中使用 errnoerrorstring

不幸的是,整数除以零在 C++ 中是未定义的行为。所以运行时可以做任何事情。你已经失去了对程序的控制,所以没有什么可以帮助你。

最好的办法是先检查分母并明确处理零的情况:程序失败时返回非零是惯用的。

除以零就是 Undefined Behaviour。该语言希望您不要编写那样无意义的代码(如果您这样做,就会鄙视您)。从本质上讲,它会使您的整个程序变得毫无意义,并且任何事情都可能发生。如果有任何可能为零,您需要在除法之前检查分母。

C和C++中存在未定义行为的主要原因是效率。硬件不想检查这种没有数学意义的特殊情况,语言也不希望每次调用都添加检查。这些语言旨在 运行 在 "good" 情况下非常快。

errno 仅在使用标准库(和系统调用)时针对某些错误设置。例如:

double not_a_number = std::log(-1.0);
std::cerr << std::strerror(errno) << '\n';