首页
›
编程基础与工程化
›
011-C
›
《C语言异常处理最佳实践》
VIP20
本课程属于:011-C
编程基础与工程化 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
C语言异常处理最佳实践
📚 共计 30 章节
01
错误码的哲学:为什么C语言没有try-catch?
探讨C语言的错误处理哲学,理解返回值、errno与信号的核心思想。
哲学
核心思想
02
返回值的艺术:函数返回值的约定俗成
0表示成功,非0表示失败,如何设计清晰的返回值语义。
语义
约定
03
errno全局变量:工作原理与线程安全
errno的工作原理、线程安全性问题,以及如何正确使用perror()和strerror()。
errno
线程安全
04
goto的救赎:集中式错误处理
用goto实现集中式错误处理,避免深层嵌套,构建清晰的错误清理路径。
goto
清理路径
05
RAII的C语言实现:资源自动释放
通过结构体和函数封装,模拟C++的RAII思想,确保资源自动释放。
RAII
封装
06
setjmp与longjmp:非局部跳转
实现简易的异常捕获机制,以及其使用限制和风险。
跳转
风险
07
信号处理基础:signal()与sigaction()
捕获SIGSEGV、SIGINT等信号,编写安全的信号处理函数。
信号
安全
08
信号处理的陷阱:可重入与异步安全
可重入函数、Async-Signal-Safe函数列表,以及volatile sig_atomic_t的使用。
陷阱
可重入
09
断言的艺术:assert()宏
在调试阶段捕捉不可能发生的状态,以及如何在发布版本中禁用断言。
断言
调试
10
静态断言:_Static_assert编译期检查
在编译时验证结构体大小、数组长度等约束条件。
编译期
约束
11
日志系统:分级日志与文件记录
构建分级日志系统(ERROR/WARN/INFO/DEBUG),将错误信息记录到文件。
日志
分级
12
错误传播链:逐层传递上下文
设计错误传播机制,让底层错误信息能够逐层向上传递,保留原始上下文。
传播
上下文
13
内存分配失败处理:malloc/calloc/realloc
返回NULL时的处理策略,以及自定义内存分配器的容错设计。
内存
容错
14
文件操作异常处理:fopen/fread/fwrite
返回值检查,文件锁、文件描述符泄漏的防范。
文件
泄漏
15
网络编程异常处理:socket/bind/connect
send/recv的错误处理,超时设置与非阻塞模式下的异常管理。
网络
超时
16
多线程错误处理:pthread_* 返回值检查
pthread_create/mutex_lock/cond_wait,线程安全与死锁预防。
多线程
死锁
17
自定义错误类型:枚举与统一错误码
通过枚举定义错误码,构建统一的错误码体系,便于模块间协作。
枚举
统一
18
错误码与字符串映射:可读性提升
实现错误码到可读字符串的映射函数,提升日志和用户提示的可读性。
映射
可读性
19
清理函数(Cleanup)模式
使用__attribute__((cleanup))或手动注册清理函数,确保退出时资源释放。
清理
资源
20
对象池与错误恢复:优雅降级
预分配对象池,在内存紧张时优雅降级,而不是直接崩溃。
对象池
降级
21
契约式编程:前置/后置条件与不变量
在函数入口和出口验证状态合法性。
契约
验证
22
模糊测试与异常发现:libFuzzer/AFL
对C代码进行模糊测试,自动发现边界条件和异常路径。
模糊测试
边界
23
单元测试中的异常模拟:CMocka/Unity
模拟错误条件,测试异常处理代码的正确性。
单元测试
模拟
24
防御性编程:指针、越界与溢出检查
检查指针是否为NULL、数组是否越界、整数是否溢出,编写健壮的C代码。
防御
健壮
25
异常处理性能分析:开销对比与优化
不同异常处理机制(返回值、setjmp、信号)的性能开销对比及优化建议。
性能
优化
26
嵌入式系统的异常处理:资源受限
避免动态内存分配,使用看门狗定时器,错误处理策略。
嵌入式
看门狗
27
内核模块的异常处理:IS_ERR/PTR_ERR
Linux内核中的错误处理惯例,使用IS_ERR/PTR_ERR宏,以及内核日志系统。
内核
宏
28
遗留代码的异常处理改造
如何在不破坏现有接口的前提下,逐步引入统一的错误处理框架。
重构
兼容
29
跨平台异常处理:Windows与Linux
差异分析与条件编译,实现统一的错误处理接口。
跨平台
条件编译
30
构建企业级异常处理框架
综合运用前述技术,设计一个可复用、可扩展的C语言异常处理框架。
企业级
框架
所属VIP或分类
同VIP:C++-Qt界面开发速成
同VIP:C++-STL-源码级实战
同VIP:C++模板高阶编程:从元编程到实战