【C语言练习】070. 编写代码处理C语言中的异常情况

发布于:2025-06-02 ⋅ 阅读:(30) ⋅ 点赞:(0)

070. 编写代码处理C语言中的异常情况

在C语言中,没有内置的异常处理机制(如Java或Python中的try/catch),但可以通过一些编程技巧来处理异常情况。常见的方法包括:

  1. 使用返回值检查错误:函数返回特定的错误码。
  2. 使用全局变量记录错误状态:如errno
  3. 使用回调函数或信号处理程序:处理运行时错误或中断。
  4. 使用setjmplongjmp:实现非局部跳转,模拟异常处理。

C语言异常处理的基本思路

C语言本身不提供类似C++或Java的try-catch异常处理机制,通常通过以下方式实现异常处理逻辑:

  1. 返回值检查:函数通过返回特定值(如NULL、-1等)表示错误状态,调用方需主动检查返回值。
  2. 全局变量errno:标准库函数常通过设置errno标识错误类型,需配合perror()或strerror()使用。
  3. 信号处理:通过signal()或sigaction()捕获运行时信号(如SIGSEGV)。
  4. 长跳转setjmp/longjmp:非局部跳转实现异常流程控制(谨慎使用)。

返回值检查示例

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

int divide(int a, int b, int* result) {
   
    if (b == 0) return -1;  // 异常情况
    *result = a / b;
    return 0;  // 成功
}

int main() {
   
    int res;
    if (divide(10, 0, &res) == -1) {
   
        fprintf(stderr, "Division by zero\n");
        exit(EXIT_FAILURE);
    }
    printf("Result: %d\n", res);
    return 0;
}

errno使用示例

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

网站公告

今日签到

点亮在社区的每一天
去签到