C++ | 12天学好C++ (Day 12)->结构图可视化、代码加通俗理解

news/2024/4/26 5:40:49/文章来源:https://blog.csdn.net/weixin_44649780/article/details/127237038

为每天进步一点点而努力。

C++是计算机视觉的重要的一部分,虽然在初始学习时Python应用比较广,但是大多数公司还是C++做计算机视觉类的比较多,因为C++可加密,所以我们来一起探索吧!看了这系列博客,将会学到C++的基本操作!(如果不敲代码,可能会一知半解)

 第十二天-221010

目录

chapter 13 异常处理和总结

13.1.异常处理try,throw,catch,

13.2.C++12天总结

参考文献


chapter 13 异常处理和总结

异常exception

异常是指计算机系统在运行时发生意外错误,正在运行的程序被停止。

异常处理是指更改代码流以处理这些异常的行为。

C++ 提供了语言级别的异常处理语法,可以轻松扩展和管理异常处理方式。

常见的异常是除以0或动态分配失败!

13.1.异常处理try,throw,catch,

可以通过使用 C++ 的异常处理机制来提高可读性。

C++ 提供了一种在结构上处理异常的机制。除了提高可读性和可维护性之外,还可以将异常处理与程序的一般流程分开。

 try 块用于指定异常发生的检查范围。也就是说,如果 try 块内发生异常,则由 C++ 异常处理机制处理。

 catch 块是一个区域,其中包含处理 try 块中发生的异常的代码,其形状类似于没有返回类型的函数。

catch 块必须始终出现在 try 块之后,try 块中引发的异常在 catch 块中处理。

throw 用于构造一个指示发生异常的语句。

 throw expn;

上句中,expn可以是任何可以表达的数据,比如变量、常量、对象等,但必须是包含异常信息的有意义的数据。因此,到达 expn 位置的数据表示为“异常”。

C++ 中的异常处理按以下顺序进行:

1. 到达 try 语句的程序控制执行 try 语句内的代码。

2. 如果此时没有抛出异常,则程序的控制立即移至最后一个 catch 子句之后。

3. 如果发生异常,catch 处理程序按以下顺序查找适当的catch 子句。

   3-1。检查堆栈,从 try 语句和最近的 catch 子句开始。

   3-2。如果没有找到合适的 catch 子句,则依次检查紧接在下一个外部 try 语句之后的 catch 子句。

   3-3。这个过程一直持续到最外面的 try 语句。

   3-4。如果仍未找到合适的 catch 子句,则调用预定义的 terminate() 函数。

4. 如果找到适当的catch 子句,则将throw 语句的操作数作为异常对象的形式参数传递。

示例:输入学生数和总分数,求平均数

#include <iostream>
using namespace std;int main() {int students, scores;cout << "Input student number: ";cin >> students;cout << "Input sum: ";cin >> scores;cout << "Average number is : " << scores / (double)students << "." << endl;return 0;
}

 如果人数是0 ,那么

 这是发生异常,加入异常处理后

#include <iostream>
using namespace std;int main() {int students, scores;cout << "Input student number: ";cin >> students;cout << "Input sum: ";cin >> scores;try {if (students == 0) throw(scores);cout << "Average number is : "  << scores / (double)students << "." << endl;}catch (int e) {cout << "Student num is 0!!" << endl;cout << "Input scores is " << e << "." << endl;}return 0;
}

异常处理允许您将结构分类为大小 try 语句、throw 语句和 catch 语句。
首先,try 语句指定要在其中使用异常处理的块。
throw 语句只能在 try 语句中使用,无论数据类型如何,都会传入一个值。
此时,如果出现 throw 命令,则跳过 try 语句的其余部分。
catch 语句的内容是不会正常执行的,
但是如果当throw操作执行时,选择合适的并执行内容!
在 try 语句之后必须至少存在一个 catch 语句,
可以有多个 catch 语句。这将逐步解释。

示例:输入id,要求开头是英文

#include <iostream>
#include <string>
#include <cctype>
using namespace std;int main() {string id;try {cout << "Input id(english): ";cin >> id;if (!isalpha(id[0])) throw id;cout << "id: " << id << endl;}catch (string e) {cout << "Error (" << e << ")" << endl;}return 0;
}
在这个例子中,id是以字符串的形式输入的,但是如果第一个字符不是抛出接收到的值。在这种情况下,由于值的数据类型是字符串类型,catch语句中变量的数据类型也必须是字符串!
cctype头文件中的isalpha()函数用于判断是否为字母字符。

 

注意:输入了一个无效的值,就会执行catch语句!!
当然异常处理有很多种类型,这里只讲最常见的类型。

13.2.C++12天总结

1.把握整体构造,再查看其中细节及其实现。

2.学习一门计算机语言和学一门外语一样,首先要了解其中的内在构造,以及它的缘由。

3.计算机语言的基础核心相同,了解中间的微小差异。例如:

C: printf

C++:cout

Python:print

4.在程序代码中是通过变量名对内存单元进行存取操作的,但是代码经过编译后将变量名转换为该变量在内存中的存放地址,对变量值的存取都是通过地址进行的。

5.C++提供了通过地址来访问内存单元的方法,地址可可以称为指针,意思是通过指针能找到内存单元。

6,。指针是一种数据类型,通常所说的指针就是指针变量,是专门用来存放地址的变量。而变量的指针说的就是变量在内存中的地址。变量地址在编写代码时无法获得,只有在程序运行时才可以得到。

参考文献

【1】[ C++ ] 예외처리 메커니즘( try, catch, throw ) 총 정리

【2】코딩의 시작, TCP School 

【3】https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kks227&logNo=220404335069 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_398918.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#边学边记 必修4 高项:对事的管理 第4章 项目进度管理之 制定进度计划

制订进度计划的输入、工具与技术和输出 制定进度计划过程分析活动顺序、持续时间、资源需求和进度制约因素&#xff0c;创建项目进度模型的过程。主要作用是把活动、持续时间、资源、资源可用性和逻辑关系代入进度规划工具&#xff0c;从而形成包含各个项目活动的计划日期的进…

在docker安装的centos容器内设置远程链接

写在前面 写在前面 运维这个行业&#xff0c;不需要按照顺序学习。 比如你学会了基础命令&#xff0c;直接学docker和k8s&#xff0c;和学会了基础命令开始学服务难度差不多。 再比如你学会了基础命令直接学shell脚本&#xff0c;也能学的会。 所以我一直主张&#xff0c;…

WEB漏洞-文件操作之文件下载读取全解

目录 前言: (一&#xff09;前置知识 &#xff08;二&#xff09;文件下载读取漏洞利用 1、网站目录的获取&#xff1a; 0x01 字典 0x02 网络爬虫 0x03 fuzz 0x04 自动化工具 0x05 下载传参的脚步文件 0x06 配合其他漏洞 2、下载数据库,操作系统配置文件 0x01 Window…

非空约束

1.创建表时添加约束   创建完表后,添加非空约束 删除name的非空约束

Vue3.0----组件基础【上】(第二章)

一、单页面应用程序 1. 什么是单页面应用程序 单页面应用程序&#xff08;英文名&#xff1a;Single Page Application&#xff09;简称 SPA&#xff0c;顾 名思义&#xff0c;指的是一个 Web 网站中只有唯一的一个 HTML 页面&#xff0c;所有的 功能与交互都在这唯一的一个页…

(六)Shell编程之函数、脚本引用、符号展开、重定向

一、定义函数 shell中函数的定义格式如下&#xff1a; [ function ] funname [()] {action;[return int;] }说明&#xff1a; 可以带function fun()定义&#xff0c;也可以直接fun()定义&#xff0c;如果带function函数名后的小括号可以省略。返回值语句[return int;]可以不写…

软件项目管理:外包 outsourcing、采购 procurement、合同 contracts

文章目录外包不同类型为什么选择外包好处坏处采购 procurementplanning 阶段-弄清需求 & 市场 / 评估风险Source 阶段-确定供应商具体过程RFxState of Work (SOW)评估步骤 Evaluation processManage 阶段Contract 合同定义种类固定价格合同适用场景&#xff08;保守&#x…

稀疏矩阵的压缩存储

目录 稀疏矩阵的定义 稀疏矩阵的转置 代码实现 运行结果 稀疏矩阵的定义 假设在 m * n 的矩阵中&#xff0c;有 t 个元素不为零&#xff0c;且 t<<m*n&#xff0c;则称此矩阵为稀疏矩阵。按照常规的存储方法&#xff0c;稀疏矩阵很浪费内存空间&#xff0c;所以采取…

学习梦想家CMS内容管理系统-环境启动

gitee官网中项目的地址&#xff1a;首先准备里面提到的工具其中JDK8和MySQL5.7我们已经有了&#xff0c;现在需要准备另外的工具。 Spring Tool Suite 4&#xff08;STS&#xff09; 安装过程在《1-1-Spring Tool Suite 4&#xff08;STS&#xff09;的下载安装》 Redis 安装…

数字孪生在电网系统开发建设,如何选择可视化平台?

随着新能源发展规模持续增大&#xff0c;电网作为能源转换利用和输送配置的枢纽平台&#xff0c;其功能、结构和形态发生了深刻变化。同时&#xff0c;随着现代计算机技术发展&#xff0c;数字孪生成为电网向数字化转型、提高电网调度运行决策的准确性与实时性提供关键技术支撑…

初识数据库-MySQL数据库

文章目录数据库数据库的相关概念常见的关系型数据库管理系统MySQL数据库MySQL目录结构MySQL数据模型数据库 数据库的相关概念 数据库 存储数据的仓库&#xff0c;数据是有组织的进行存储英文&#xff1a; DataBase,简称 DB 数据库管理系统 管理数据库的大型软件英文&#xff…

震撼上新丨云和恩墨新一代数据库存储 zStorage 和数据库一体机 zData X 即将发布...

存储&#xff0c;在一定程度上可以称为数据库存储&#xff0c;存储与数据库的发展总是相生相随。技术上&#xff0c;数据库对高 I/O 频率、低时延、高可靠性的追求一直是存储更快、更高、更强需求的来源。商业上&#xff0c;两家影响世界的公司 Oracle 和 EMC 几乎同时起步于 1…

使用element ui的el-upload组件上传图片,记录一下

使用element ui的el-upload组件上传图片 效果预览 下面是实现效果,接口方面是把有两个接口,一个接口上传图片,传参是图片和路径,返回值是路径。另一个接口是上传表单内容(用户,地址,照片),照片是传一个路径。具体实现 html <el-form-item label="上传照片"…

第二十一章 函数递归

一、函数递归调用介绍 函数不仅可以嵌套定义,还可以嵌套调用,即在调用一个函数的过程中,函数内部又调用另一个函数,而函数的递归调用指的是在调用一个函数的过程中又直接或间接地调用该函数本身。例如在调用f1的过程中,又调用f1,这就是直接调用函数f1本身def f1():print(…

springboot(三)

视频链接&#xff1a;https://www.bilibili.com/video/BV1XQ4y1m7ex/?vd_source9545770e4a2968c05878ffac8589ec6c 视频选集&#xff1a;P58— P92 文章目录1.接口架构风格-RESTful1.1 认识REST1.2 RESTful的注解1.2.1 PathVariable1.2.2 PostMapping1.2.3 DeleteMapping1.2.4…

分布式缓存

本文介绍关于缓存的常用设计模式。以及如何保证缓存的一致性进行分类讨论。 还会介绍关于缓存失效的常见问题&#xff0c;以及针对缓存失效的解决方法。 在高并发的环境下&#xff0c;比如春节抢票大战&#xff0c;一到放票的时间节点&#xff0c;分分钟大量用户以及黄牛的各种…

魔改xxl-job,彻底告别手动配置任务!

xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单,但是苦于手动注册任务久矣,今天就来魔改一下,实现任务的自动注册!原创:微信公众号 码农参上,欢迎分享,转载请保留出处。哈喽大家好啊,我是Hydra。 xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单、…

12个小细节让普源示波器使用更加高效(上)

俗话说细节决定成败&#xff0c;示波器作为电子测量的第一工具&#xff0c;虽然使用简单&#xff0c;但并不是每个人都能注意到细节。运用好细节&#xff0c;可以使你的示波器使用更加的便捷。以下由安泰测试带来普源示波器测量相关的12个小细节可作为示波器常识快速自检的小文…

Spring Boot(4):@Import注解和@Conditional注解

说明&#xff1a;基于atguigu学习笔记。 在了解spring boot自动配置原理前&#xff0c;再来了解下两个注解Import注解和Conditional注解。 Import Import注解主要用于导入某些特殊的Bean&#xff0c;这些特殊的Bean和Bean Definitaion 有关。 主要用于导入Configuration 类…

Python实现桌面挂件,做一只可爱的桌面宠物~

文章目录嗨嗨&#xff0c;大家好 ~ 我是小圆相关文件开发工具相关模块&#xff1a;环境搭建安装原理简介1.初始化一个窗口组件&#xff1a;效果2.设置一下窗口的属性&#xff1a;随机导入一张图片&#xff0c;看效果随机导入一个宠物的所有图片的函数代码3.宠物随机出现在桌面上…