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

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

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

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 

相关文章:

  • 【深入理解Kafka系列】第五章 日志存储
  • 想做好数据可视化?手把手教你正确选择图表类型
  • C#【高级篇】 IntPtr是什么?怎么用?
  • 软考知识点---01计算机的基本组成---02存储系统
  • Day09JavaWeb第九次笔记---Request和Response学习
  • 第三章 Flink基础理论之内存优化及常见内存报错解决方案
  • 分数阶粒子群算法-附代码
  • springboot(三)
  • Kubernetes 常见面试题(六)
  • Linux安装禅道最新版
  • 【Bluetooth|蓝牙开发】十一、一文秒懂 | 超详细的Bluez交叉编译
  • TC8:SOMEIPSRV_FORMAT_01-10
  • 软考:信息安全工程师3
  • 接口(续)和Object类
  • 构造接口,免费查询快递物流
  • 08.Android之View事件问题
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • angular2开源库收集
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • github指令
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Java-详解HashMap
  • Tornado学习笔记(1)
  • Vue.js 移动端适配之 vw 解决方案
  • 扑朔迷离的属性和特性【彻底弄清】
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一个JAVA程序员成长之路分享
  • 在Mac OS X上安装 Ruby运行环境
  • 终端用户监控:真实用户监控还是模拟监控?
  • 追踪解析 FutureTask 源码
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​低代码平台的核心价值与优势
  • ​水经微图Web1.5.0版即将上线
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ###项目技术发展史
  • (1)(1.11) SiK Radio v2(一)
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (poj1.3.2)1791(构造法模拟)
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (九)One-Wire总线-DS18B20
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (理论篇)httpmoudle和httphandler一览
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)程序员技术练级攻略
  • ***详解账号泄露:全球约1亿用户已泄露
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net 发送邮件
  • .Net 中Partitioner static与dynamic的性能对比
  • /bin/bash^M: bad interpreter: No such file or directory