96SEO 2026-02-19 17:50 30
在C中#xff0c;异常处理通常使用try-catch块来实现。

try块用于包含可能会抛出异常的代码#xff0c;而catch块用于捕获并处理异常。
当异常被抛出时#xff0c;程序会跳过try块中未执行…
在C中异常处理通常使用try-catch块来实现。
try块用于包含可能会抛出异常的代码而catch块用于捕获并处理异常。
当异常被抛出时程序会跳过try块中未执行的代码并在catch块中执行适当的处理操作。
如果没有抛出异常则catch块将被跳过。
尝试执行下面的代码块如果发生异常则跳转到catch块处理异常int
捕获一个字符串类型的异常对象将异常对象赋值给变量errorstd::cerr
异常对象是一种特殊的对象。
编译器依据异常抛出表达式构造异常对象即异常对象总是被拷贝。
对象的类型是由表达式所表示对象的静态编译类型决定的。
如Parent
异常对象存放在内存特殊位置该位置既不是栈也不是堆在Windows中是放在线程信息TIB中。
该对象由异常机制负责创建和释放g和vc下存储区域处理略有差异。
异常对象不同于函数的局部对象局部对象在函数调用结束后就被自动销毁而异常对象将驻留在所有可能激活的catch语句都能访问到的内存空间中。
当异常对象与catch语句成功匹配后在该catch语句的结束处被自动析构。
在函数中返回局部变量的指针或引用几乎肯定会造成错误。
同理在throw语句中抛出局部变量的指针或引用也几乎是错误的。
//尽管localEx是个局部对象但这里会将其复制构造出一个异常对象并存储在TIB中。
而不是真正的将局部对象抛出去
//编译器会将这个临时对象直接存储在线程TIB中成为异常对象注意与临时对象1存储位置一般相距较远
//注意抛出的是re的静态类型的异常对象即MyException而不是MyChildExcept;throw
----------------------------------catch
value------------------------------
--------------------------------catch
reference----------------------------
---------------------------------catch
pointer-----------------------------
------------------------------------throw
again-------------------------------
//e会继续复制一份并抛出复制的异常对象而e本身会被释放//2.throw后不指定任何对象只要是在catch中捕获的一律抛出去。
throw;
//此时e本身再被抛出去。
不会另外构造异常对象。
}}catch
参考博客https://www.cnblogs.com/5iedu/p/11270922.html
异常是通过抛出对象而引发的该对象的类型决定了应该激活哪个catch的处理代码。
被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那一个。
抛出异常对象后会生成一个异常对象的拷贝因为抛出的异常对象可能是一个临时对象所以会生成一个拷贝对象这个拷贝的临时对象会在被catch以后销毁。
这里的处理类似于函数的传值返回catch(...)可以捕获任意类型的异常问题是不知道异常错误是什么。
实际中抛出和捕获的匹配原则有个例外并不都是类型完全匹配抛出的派生类对象可以使用基类捕获这个在实际中非常实用。
首先检查throw本身是否在try块内部如果是再查找匹配的catch语句。
如果有匹配的则调到catch的地方进行处理。
没有匹配的catch则退出当前函数栈继续在调用函数的栈中进行查找匹配的catch。
如果到达main函数的栈依旧没有匹配的则终止程序。
上述这个沿着调用链查找匹配的catch子句的过程称为栈展开。
所以实际中我们最后都要加一个catch(...)捕获任意类型的异常否则当有异常没捕获程序就会直接终止。
4.
找到匹配的catch子句并处理以后会继续沿着catch子句后面继续执行。
捕获一个std::exception类型的异常对象将异常对象赋值给变量estd::cerr
有可能单个的catch不能完全处理一个异常在进行一些校正处理以后希望再交给更外层的调用链函数来处理catch则可以通过重新抛出将异常传递给更上层的函数进行处理。
Exception{public:Exception(const
Exception{public:HttpServerException(const
HttpServerException(SeedMsg::网络错误,
HttpServerException(SeedMsg::你已经不是对方好友,
(1){::Sleep(1000);try{//skate::HttpServer();//
i){try{skate::SeedMsg(你好啊今晚一起看电影怎么样);break;}catch
其他错误{//break;//发送失败,直接重新抛出throw
网络错误,因为网络错误没有重新抛出,已经被特殊处理了}catch
构造函数完成对象的构造和初始化最好不要在构造函数中抛出异常否则可能导致对象不
完整或没有完全初始化析构函数主要完成资源的清理最好不要在析构函数内抛出异常否则可能导致资源泄漏(内存泄漏、句柄未关闭等)C中异常经常会导致资源泄漏的问题比如在new和delete中抛出了异常导致内存泄
漏在lock和unlock之间抛出了异常导致死锁C经常使用RAII来解决以上问题。
这里学习noexcept关键字的关键主要为了看得懂官方文档的声明具体细节就做过多介绍了
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback