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

深圳网站建设哪个好什么是微网站

深圳网站建设哪个好,什么是微网站,合肥瑶海区房子值得买吗,怎样拿电脑做网站往期回顾: C 入门第24天:C11 多线程基础-CSDN博客 C 入门第25天:线程池(Thread Pool)基础-CSDN博客 C 入门第26天:文件与流操作基础-CSDN博客 C 入门第27天:异常处理详细讲解 前言 在 C 开发中…

往期回顾:

C++ 入门第24天:C++11 多线程基础-CSDN博客

C++ 入门第25天:线程池(Thread Pool)基础-CSDN博客

C++ 入门第26天:文件与流操作基础-CSDN博客


 C++ 入门第27天:异常处理详细讲解

前言

在 C++ 开发中,异常处理是一种重要的错误处理机制,它能够让程序在遇到错误时优雅地处理,而不是直接崩溃。C++ 提供了 try-catch-throw 语法来捕获和处理异常。

今天,我们将学习:

(1)异常的基本概念

(2)如何抛出和捕获异常

(3)标准异常类 std::exception

(4)自定义异常


1. 什么是异常?

异常(Exception) 是指程序运行时发生的错误,例如:

1、除零错误

2、访问越界

3、内存分配失败

4、文件打开失败

C++ 提供了 异常机制,允许程序在错误发生时抛出异常,并由调用者捕获并处理。

2. try-catch-throw 语法

2.1 基本用法

#include <iostream>
using namespace std;int main() {try {throw "发生异常!"; // 抛出异常} catch (const char* msg) { // 捕获异常cout << "捕获异常:" << msg << endl;}return 0;
}

运行结果

捕获异常:发生异常!

其中主要是三个关键字的使用:

throw 关键字用于抛出异常。

try 代码块包裹可能发生异常的代码。

catch 代码块用于捕获并处理异常。

3. 抛出和捕获不同类型的异常

C++ 允许抛出各种类型的异常,包括 intdoublestring 等。

#include <iostream>
using namespace std;void testException(int type) {if (type == 1)throw 404;         // 抛出整数else if (type == 2)throw 3.14;        // 抛出浮点数else if (type == 3)throw string("异常信息!"); // 抛出字符串
}int main() {try {testException(3);} catch (int e) {cout << "捕获整数异常:" << e << endl;} catch (double e) {cout << "捕获浮点数异常:" << e << endl;} catch (string e) {cout << "捕获字符串异常:" << e << endl;}return 0;
}

运行结果

捕获字符串异常:异常信息!

注意

  • catch 语句的顺序很重要,应从具体类型到通用类型(catch (...))。
  • 如果没有匹配的 catch 语句,程序会终止。

4. 使用 std::exception 进行异常处理

C++ 标准库提供了 std::exception 及其子类,用于处理不同类型的异常:

4.1 std::exception 基础用法

#include <iostream>
#include <exception>
using namespace std;int main() {try {throw exception(); // 抛出标准异常} catch (const exception& e) {cout << "捕获标准异常:" << e.what() << endl;}return 0;
}

注意,其中e.what() 返回异常信息,默认是 "std::exception"

4.2 std::runtime_errorstd::logic_error

C++ 提供了两个常见的异常类型:

(1)runtime_error:用于运行时错误(如除零、文件未找到)。

(2)logic_error:用于逻辑错误(如数组越界)。

#include <iostream>
#include <stdexcept>
using namespace std;int main() {try {throw runtime_error("运行时错误!");} catch (const runtime_error& e) {cout << "捕获 runtime_error:" << e.what() << endl;}return 0;
}

运行结果

捕获 runtime_error:运行时错误!

5. 自定义异常类

如果标准异常不能满足需求,可以定义自己的异常类,继承 std::exception

#include <iostream>
#include <exception>
using namespace std;// 自定义异常类
class MyException : public exception {
public:const char* what() const noexcept override {return "自定义异常发生!";}
};int main() {try {throw MyException();} catch (const MyException& e) {cout << "捕获异常:" << e.what() << endl;}return 0;
}

运行结果

捕获异常:自定义异常发生!

自定义异常类要注意两个要点:

(1)继承 std::exception 并重写 what() 方法。

(2)noexcept 关键字表示 what() 不会抛出异常。

6. catch(...) 捕获所有异常

如果不确定会抛出什么类型的异常,可以使用 catch(...) 捕获所有异常。

#include <iostream>
using namespace std;int main() {try {throw 3.14; // 抛出一个 double 类型的异常} catch (...) {cout << "捕获了未知异常!" << endl;}return 0;
}

运行结果

捕获了未知异常!

catch(...) 通常放在最后,以捕获所有未处理的异常。

7. noexcept 关键字

C++11 引入了 noexcept,用于标识一个函数不会抛出异常。

#include <iostream>
using namespace std;void safeFunction() noexcept {cout << "这个函数不会抛出异常" << endl;
}int main() {safeFunction();return 0;
}

使用noexcept的作用是,一方面告诉编译器该函数不会抛出异常,可以优化性能。另一方面,如果 noexcept 函数抛出异常,程序会调用 std::terminate() 终止。


8. 总结

以上就是 C++ 11 中异常处理操作的基础详细知识点了。从异常的基本概念,到try-catch-throw 语句的使用方法,再到标准异常 std::exception 及其子类,以及我们还可以自定义异常,使用 catch(...) 捕获所有异常,还有noexcept 关键字。异常处理是编写健壮 C++ 程序的关键技巧。合理使用异常,可以提高程序的稳定性,并让错误处理更加清晰。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

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

相关文章:

  • 英文 edm营销 的网站 与 工具网站站长英文
  • 在百度备案网站wordpress防止数据库注入
  • 企业网站数据库设计表中国电商排名前十名
  • 禹顺生态建设有限公司网站七牛 wordpress插件
  • 公司网站数据分析公司从零开始学做网站 网站
  • 哪个网站可以找题目给小孩做做汽配的网站
  • wordpress加cnzz统计在那里加如何给网站做外部优化
  • 7个优秀网站设计赏析网站设计 视频
  • 用什么自己做网站吗在58做网站推广有用没
  • 建设建设银行甘肃分行网站无锡网站商城建设
  • 集趣网站怎么做兼职国内ui做的好的网站
  • 哪个网站可以做名片水母智能在线设计平台
  • 想做网站 优帮云新会住房和城乡建设部网站
  • 网站logo用什么来做深圳网站建设 壹起航
  • 依波手表价格 官方网站wordpress 代码 工具栏
  • 北京市建设工程造价管理协会网站html5 wordpress
  • 产品设计网站制作网站开发文档编写
  • 网站建设与维护学什么做网站需要的公司
  • 网站怎么看被百度收录品牌建设过程中的正确名利观
  • 网站做弹窗建设银行手机绑定网站
  • 什么网站做推广效果好2016wap网站开发语言
  • 如何用自己的电脑做网站服务器厦门seo报价
  • 如何在自己网站添加链接360建筑网网址
  • 网站备案管理系统登录不上去wordpress 批量文章
  • 厦门网站j建设wordpress怎么pjax
  • 菏泽网站建设公司蓝希科技有哪些专做旅游定制的网站
  • 动漫网站开发研究内容2018wordpress极品主题
  • 关于网站建设的新闻小视频网站建设
  • 有哪些做平面设计好的网站有哪些内容网页界面设计中一般使用的分辨率的显示密度是多少
  • 建设银行网站用户权限百度站长收录入口