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

网站开发好不好网络营销课程培训课程

网站开发好不好,网络营销课程培训课程,做外贸网站卖什么好,北京高端网站目录 上一章节: 一、引言 断言: 断言的用途: 二、什么是异常处理 三、异常处理的“三大法宝” 四、异常处理的“用武之地” 1、文件操作中的“守护神” 2、内存分配中的“救星” 五、异常处理的“终极使命” 六、总结 上一章节&…

目录

上一章节:

一、引言

断言:

断言的用途:

二、什么是异常处理

三、异常处理的“三大法宝”

四、异常处理的“用武之地”

1、文件操作中的“守护神”

2、内存分配中的“救星”

五、异常处理的“终极使命”

六、总结


上一章节:

十四、C++速通秘籍—函数式编程-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147191769?spm=1001.2014.3001.5502

一、引言

在C++的编程江湖里,代码就像我们手中的宝剑,在披荆斩棘的过程中,难免会遇到各种“妖魔鬼怪”,也就是程序运行时的错误。异常处理就如同一位法力高强的护法,能帮我们轻松应对这些突发状况,让程序平稳运行。接下来,就让我们一起揭开异常处理的神秘面纱吧!

开启这段介绍之前插入一个话题,对于我们调试过程中经常使用到的“断言”,这个并不是异常处理方式:

断言:

它是一种调试工具,用于在代码里检查某个条件是否为真。若条件为假,程序会终止并给出错误信息。在 C++ 中,可使用  头文件里的 assert 宏来实现断言。

断言的用途:

主要用于在开发和调试阶段找出程序中的逻辑错误。例如,你可能会在函数开头断言输入参数是否合法。

#include <cassert>
#include <iostream>// 一个简单的除法函数,使用断言检查除数是否为零
double divide(double a, double b) {assert(b != 0 && "除数不能为零");return a / b;
}int main() {double result = divide(10, 0);std::cout << "结果: " << result << std::endl;return 0;
}

若想断言在编译期发现,则可以使用static_assert,如果表达式为假,编译器会产生一个编译错误,并输出指定的错误信息。

#include <iostream>template<typename T>
void checkType() {static_assert(sizeof(T) >= 4, "类型的大小必须至少为 4 字节");std::cout << "类型检查通过" << std::endl;
}int main() {checkType<char>();return 0;
}

static_assert是编译时检查,与是否是发布版本无关。在上述代码中,由于char类型的大小通常为 1 字节,不满足sizeof(T) >= 4的条件,编译器会报错,阻止程序编译通过。推荐使用!!

在发布版本中,断言通常会被禁用,以避免影响程序的性能。

二、什么是异常处理

简单来说,异常处理是一种机制,当程序运行中碰到错误或异常状况时,它能让程序暂停当前的执行流程,然后跳转到专门处理异常的代码区域。从而避免软件的直接崩溃,给软件使用者提供了很好的体验保护。这就好比我们在探险时,遇到了陷阱,马上启动应急方案,避免陷入绝境。

三、异常处理的“三大法宝”

在C++中,异常处理主要依靠 try、catch 和 throw 这三个关键字。它们就像一个紧密配合的团队,各司其职。

try {// 这里是可能会触发异常的代码,就像探险中的危险区域throw exception_type; // 当危险来临,抛出异常信号
} catch (exception_type e) {// 捕获异常,进行相应的处理,如同启动应急方案
}

下面,我们通过一个具体的例子来看看这“三大法宝”是如何发挥作用的。

#include <iostream>
#include <stdexcept>int main() {try {int numerator = 10;int denominator = 0;if (denominator == 0) {throw std::runtime_error("除数可不能为零呀,这会出大问题!");}int result = numerator / denominator;std::cout << "计算结果是: " << result << std::endl;} catch (const std::exception& e) {std::cerr << "哎呀,捕获到异常啦: " << e.what() << std::endl;}return 0;
}

在这个例子里,我们在 try 块中进行除法运算。要是除数为零,就用 throw 关键字抛出一个 std::runtime_error 异常,这时,程序就会立刻跳转到 catch 块,输出异常信息。这样,即便遇到除零这种危险情况,程序也不会崩溃,而是能妥善处理异常。

四、异常处理的“用武之地”

1、文件操作中的“守护神”

在进行文件操作时,就像我们去打开一个神秘的宝箱,可能会遇到宝箱打不开(文件不存在)或者钥匙不对(文件打开失败)等情况。异常处理就能帮我们应对这些问题。

#include <iostream>
#include <fstream>
#include <stdexcept>void readFile(const std::string& filename) {std::ifstream file(filename);if (!file.is_open()) {throw std::runtime_error("文件打不开呀,是不是路径搞错啦!");}std::string line;while (std::getline(file, line)) {std::cout << line << std::endl;}file.close();
}int main() {try {readFile("nonexistent_file.txt");} catch (const std::exception& e) {std::cerr << "捕获到异常: " << e.what() << std::endl;}return 0;
}

在这个例子中,我们定义了一个 readFile 函数来读取文件内容。要是文件打开失败,就抛出一个 std::runtime_error 异常。在 main 函数里,我们用 try-catch 块来捕获并处理这个异常。

2、内存分配中的“救星”

在进行动态内存分配时,就像我们去申请一块土地,可能会遇到土地不够用(内存不足)的情况。异常处理就能帮我们处理这种尴尬局面。

#include <iostream>
#include <new>int main() {try {while (true) {int* ptr = new int[1000000];}} catch (const std::bad_alloc& e) {std::cerr << "捕获到异常: " << e.what() << std::endl;}return 0;
}

在这个例子中,我们用 new 运算符不断地申请内存。当内存不够时,就会抛出一个 std::bad_alloc 异常。我们用 try-catch 块来捕获并处理这个异常。

五、异常处理的“终极使命”

异常处理的主要目的就是让我们的程序更加健壮和可靠。它就像一个优秀的后勤保障团队,把错误处理代码和正常的业务逻辑代码分开,让代码更加清晰易懂,也更容易维护。同时,它能让程序在遇到错误时不会直接崩溃,而是能优雅地处理错误,给用户带来更好的体验。

六、总结

异常处理在C++的编程世界里占据着不可或缺的地位。掌握了异常处理的基本语法和使用场景,就好比在编程江湖中拥有了一件绝世神兵,能让你的C++程序更加稳定、强大。希望这篇博客能助你快速掌握异常处理这个秘籍,在编程的道路上一路披荆斩棘!

http://www.dtcms.com/wzjs/490368.html

相关文章:

  • 中国黑色网站模板星乐seo网站关键词排名优化
  • 广东智慧团建注册登录入口seo优化中商品权重主要由什么决定
  • 网新企业网站管理系统 破解网页设计与制作软件
  • 天河区做网站什么是seo文章
  • 做淘宝详情页好的网站临沂seo优化
  • 深圳网站建设网站制作公司花西子网络营销案例分析
  • 如果网站没有做icp备案seo是什么意思网络用语
  • 国内最大的自建站平台百度关键词统计
  • 自己做的网站怎么在移动端访问销售平台软件有哪些
  • 华跃建筑人才网网站seo网络优化
  • 网站 特效都是用什么软件做的宁波seo推广公司排名
  • 专业做红木家具网站营销网站建设多少钱
  • 微信开发网站西安百度seo代理
  • 上海做网站哪家公司好北京seo平台
  • wordpress安装下载网站优化要做哪些
  • 网站开发需要学多久阿里云建网站
  • 新疆人微信推广网站在哪里做百度关键词seo
  • 代做毕网站站长工具seo综合查询引流
  • 国内域名网站有那些兰州网络推广电话
  • 亚马逊雨林动物大全北京做的好的seo公司
  • 建设网站的政策风险分析关键词排名提高方法
  • 阿里云网站怎么做阿里妈妈天津seo代理商
  • 政务网站建设论文国内最好用免费建站系统
  • 收废品做网站企业危机公关
  • 做箱包外贸哪个网站好宝安网站建设
  • 网站分析流程各大网站收录入口
  • 高校网站建设管理制度搜索引擎关键词怎么选
  • 网站服务内容怎样选小红书sem是什么意思
  • 企业网站手机版打广告去哪个平台
  • 公司怎么做网页网站优化师是一份怎样的工作