C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C/C++错误信息

C/C++错误信息处理的常见方法及函数

作者:Ljw...

C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,这篇文章主要介绍了C/C++错误信息处理的常见方法及函数,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在 C/C++ 编程中,错误信息的捕获和处理是保证程序健壮性的重要部分。错误通常通过函数的返回值或者全局变量 errno 来表示。为了方便调试和错误处理,C/C++ 提供了多种函数和方法来获取和输出错误信息。以下是 C/C++ 错误处理的常见方法及函数介绍:

1. errno 和 perror()

示例:

#include <stdio.h>
#include <errno.h>
#include <string.h>

int main() {
    FILE *file = fopen("non_existent_file.txt", "r");
    if (!file) {
        perror("File opening failed");
    }
    return 0;
}

输出:

File opening failed: No such file or directory

在此例中,perror() 输出了一个由 errno 设置的错误信息,具体是“没有这样的文件或目录”。

2. strerror()

示例:

#include <stdio.h>
#include <errno.h>
#include <string.h>

int main() {
    FILE *file = fopen("non_existent_file.txt", "r");
    if (!file) {
        printf("Error: %s\n", strerror(errno));
    }
    return 0;
}

输出:

Error: No such file or directory

3. perror() 和 strerror() 区别

4. exit() 和 abort()

示例:

#include <stdio.h>
#include <stdlib.h>

int main() {
    if (some_error_condition) {
        fprintf(stderr, "An error occurred\n");
        exit(1);  // Exit with status 1 (error)
    }
    return 0;
}

示例:

#include <stdlib.h>
#include <stdio.h>

int main() {
    if (some_fatal_error) {
        abort();  // Immediately terminate the program
    }
    return 0;
}

5. assert()

示例:

#include <assert.h>
#include <stdio.h>

int main() {
    int x = 5;
    assert(x == 10);  // This will fail and abort the program
    return 0;
}

6. setjmp() 和 longjmp()

示例:

#include <setjmp.h>
#include <stdio.h>

jmp_buf env;

void error_recovery() {
    printf("Error occurred, recovering...\n");
    longjmp(env, 1);  // Jump back to setjmp
}

int main() {
    if (setjmp(env) != 0) {
        printf("Recovered from error\n");
        return 0;
    }
    error_recovery();  // Call this to simulate error
    return 0;
}

7. strerror_r()

示例:

#include <stdio.h>
#include <string.h>
#include <errno.h>

int main() {
    char buf[256];
    errno = ENOENT;
    strerror_r(errno, buf, sizeof(buf));
    printf("Error: %s\n", buf);
    return 0;
}

8. perror() 和 strerror() 适用场景

常见的 C/C++ 错误信息和函数

常见的错误信息

常见的函数

总结

C/C++ 提供了一系列强大的错误处理机制,包括全局变量 errno 和函数 perror()strerror() 等来输出和捕获错误信息。通过合理地使用这些函数,可以有效地捕获并报告程序中的错误,帮助开发人员在调试和生产环境中定位问题。

到此这篇关于C/C++错误信息处理的常见方法及函数的文章就介绍到这了,更多相关C/C++错误信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文