it编程 > 编程语言 > C/C++

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

36人参与 2025-04-07 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++错误信息内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

C++中std::distance使用方法示例

04-07

kotlin中const 和val的区别及使用场景分析

04-07

c++ 递归函数怎么实现

04-07

dev c++ 如何设置编译选项

04-07

c/c++中的左值右值详解

04-08

详解C++中类的大小决定因数

04-07

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论