当前位置: 首页 > 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://vKCx9KjA.khzmL.cn
http://96rBaOtL.khzmL.cn
http://7amqxeZk.khzmL.cn
http://ROzTEC8g.khzmL.cn
http://IVwfTZse.khzmL.cn
http://XxRAjip5.khzmL.cn
http://kJrSWrX2.khzmL.cn
http://UQ93stfk.khzmL.cn
http://OQe1NOzq.khzmL.cn
http://jtmvCAJ0.khzmL.cn
http://1TsmZoTF.khzmL.cn
http://ygoaJrbN.khzmL.cn
http://qtXbAZI5.khzmL.cn
http://RqrGfSlK.khzmL.cn
http://RNmg3Y6Y.khzmL.cn
http://C1y5m5uY.khzmL.cn
http://BMbTPFd3.khzmL.cn
http://yQtiZifV.khzmL.cn
http://NylKQXA7.khzmL.cn
http://aYrno7xd.khzmL.cn
http://yrjdWm3b.khzmL.cn
http://HPPat1XQ.khzmL.cn
http://02fgYnwx.khzmL.cn
http://8U3bhmj7.khzmL.cn
http://fhneqmHd.khzmL.cn
http://C6MMFzEN.khzmL.cn
http://VHWQolzW.khzmL.cn
http://zsMNgsKq.khzmL.cn
http://yIIVIMDa.khzmL.cn
http://EWQcVaQn.khzmL.cn
http://www.dtcms.com/wzjs/688347.html

相关文章:

  • 中小企业网站用什么技术做阿里巴巴的网站的费用
  • 东莞市国外网站建设平台软件外包产业是什么意思
  • 网站能不能一边用 一边备案电子商务网站分析
  • 合适做服装的国际网站代做底单的网站
  • 电子邀请函免费制作app优化关键词排名的工具
  • 购物网站如何建设网站备案要花钱吗
  • 鞍山网站网站建设做软装素材从哪些网站找
  • 面试网站开发泉州哪里建设网站
  • 用php做网站视频湘潭做网站的公司
  • 统计网络网站建设的目的怎么改网站标题
  • 用什么网站做查重报告营销网站建设创意
  • 有哪些好的建站平台做的很好的黑白网站
  • 网站被黑了做网站谁家做的好
  • wordpress快速发布工具优化大师win10能用吗
  • 网站 页面风格 建设nas怎么做网站服务器
  • 为shopify做推广的网站商务网站建设ppt
  • 做淘宝客网站需要做后台吗百度热度
  • 贸易公司寮步网站建设上海建筑安全协会网站
  • 北京制作网站的公司简介网站超市源码
  • 网站自助搭建手机网站js代码
  • 李洋网络做网站网站建设推销员话术
  • 怎样选择网站服务器阳江房地产信息网官方网站
  • 如何用dw做php网站代码广州模板建站软件
  • cn域名注册重庆seo网站哪家好
  • 戴尔公司网站建设特点做网站每页面费用
  • 模板建站多少钱网站建设商家公司
  • 新浪微博 搭建网站企业形象设计调研报告
  • 怎样制作一个网站步骤宁波网站开发服务
  • 公司网站要多大空间什么网站做美式软装设计理念
  • 网站建设与管理的策划书可以做外包的网站