当前位置: 首页 > news >正文

34、C++ 异常处理:从 setjmp/longjmp 到 C++ 异常

C++ 异常处理:从 setjmp/longjmp 到 C++ 异常

1. 认识 setjmp 异常

setjmp 异常可看作 C 风格的异常。与 C++ 风格的异常类似,它能让用户在代码中设置出错时返回的位置,并提供生成跳转异常的方法。

以下是一个示例代码:

#include <cstring> #include <csetjmp> #include <iostream> std::jmp_buf jb; void myfunc(int val) { if (val == 42) { errno = EINVAL; // Invalid argument std::longjmp(jb, -42); } } int main() { if (setjmp(jb) == -42) { std::cout << "failure: " << strerror(errno) << '\n'; std::exit(EXIT_FAILURE); } myfunc(1); std::cout << "success\n"; myfunc(42); std::cout << "success\n"; } // > g++ -std=c++17 scratchpad.cpp; ./a.out // success // failure: Invalid argument
http://www.cnnetsun.cn/news/3040.html

相关文章:

  • IT运维组织架构设计:从技术导向到业务导向转型
  • 5、SuSE Linux 安装与启动全攻略
  • 6、SuSE Linux 安装与 X 窗口系统配置全解析
  • 7、深入了解 SuSE 系统的图形与通信配置
  • 9、SuSE Linux网络配置、传真功能及用户组管理全解析
  • 10、Linux系统管理与内核定制全解析
  • 11、自定义 Linux 内核与网络管理全攻略
  • 12、SuSE Linux网络服务配置全解析
  • 13、SuSE Linux网络管理、声音配置与系统更新全攻略
  • 16、Linux在线求助与故障排查指南
  • 17、Linux系统配置与管理全解析
  • 微服务架构下的电商数据采集:封装淘宝搜索 API 为独立数据服务
  • Java小白面试历险记:从Spring Boot到云原生的技术挑战
  • 9、Knoppix桌面使用指南:网络连接、应用探索与问题解决
  • 2、Knoppix:系统运维的多功能利器
  • 34、Knoppix及其衍生版本的使用与特色
  • 38、网络安全与集群计算实用指南
  • 36、S-T-D:全方位安全防护工具详解
  • 2000-2023年县域、乡村政策DID数据大全
  • Java大厂面试实录:从Spring Boot到微服务架构,赵小纳的奇妙冒险
  • 3天带你轻松搞定仓库管理
  • 解除vcpkg对VS的全局配置注入
  • 75、探索 FreeBSD 边缘:NanoBSD 与 FreeSBIE 构建指南
  • 76、FreeSBIE定制与FreeBSD系统崩溃处理全解析
  • 77、FreeBSD系统崩溃处理与问题报告提交指南
  • 78、FreeBSD:问题报告与社区贡献指南
  • 79、一些有趣的sysctl MIBs
  • 80、FreeBSD技术全解析:系统管理、网络配置与性能优化
  • 39、FreeBSD软件包管理与搜索指南
  • 63、Web与FTP服务及FreeBSD磁盘管理全解析