《C++ Primer 第五版》(第5.1-5.6节) ——异常处理机制(try语句块,throw表达式和catch异常捕捉处理单元)

1. 异常处理机制

          C++中使用try,throw和catch三个关键字来实现异常的触发、抛出和处理的功能,具体通用语法形式如下:

                    try{

                                     if(true)

                                                  normal program-statements;//没有触发异常时候执行的代码

                                     if(false)

                                                  throw(exception);        //出现错误,抛出的异常

                     }catch(exception-declaration)   //异常捕捉

                                       handler-statements;      //异常处理

                    }.....

         C++标准库定义了一组类,用于处理标准库中遇到的问题(支持创建/拷贝/赋值操作),具体如下:

                   头文件<exception> 异常类exception 只报告异常,不提供其他信息。默认初始化

                   头文件<new> 异常类 bad_alloc   默认初始化

                   头文件<type_Info> 异常类 bad_cast   默认初始化

                   头文件<stdexcept> 异常类,如下所示:string/C风格字符串初始化

                                

        异常类型定义了一个what的成员函数,无参数,返回值为C风格字符串,和异常类型相关。异常类采用显示初始化的,则返回显示初始化的值,异常类是采用默认初始化的,内容由编译器决定。

2.case,范围for语句,continue知识点总结

           在switch-case语句中,如果每个case语句后面不加上break中止符,则case语句会跨越标签继续执行下去。例如:

                  char ch;cin>>ch;

                  switch(ch){

                                     case 'a' : ++acnt;       //如果输入的ch字符是‘a’,判断第一个case语句满足,执行完++acnt后

                                     case 'e' : ++ecnt;      //会跳过第二个case语句,执行++ecnt;

                  }

        在switch-case语句中,case标签不能单独出现,后面应该跟上一条语句或者另外一个case标签。也就是说,case标签后面可以不接语句,但是冒号必须保留。

        范围for语句中的expression(范围for语句格式:for(declaration : expression) statement)必须是一个序列,其中序列的头指针和尾后指针已经确定,因此在使用范围for语句的时候,不允许往序列中增加或删除元素(任何破坏头指针和尾后指针的行为都不允许)

       continue不允许直接使用在switch-case中,具体原因是continue是跳出当前循环并进入下一次循环,而是switch-case只有一次循环操作。

 

                   

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

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

相关文章

《C++ Primer 第五版》(第6.1~6.3节) 函数形参和实参传递,可变参数列表和函数返回值

1.函数形参和实参传递问题 函数参数传递有两种&#xff1a;值传递(变量&#xff0c;指针&#xff09;,引用传递(使用别名&#xff09;。 在形参和实参的传递过程中&#xff0c;牵涉到大的类类型对象、容器类型对象或者不支持拷贝操作的对象时&#xff0c;不适合采用值传递&…

461. 汉明距离 golang

Me 异或取出1的个数求取异或后1的个数返回 func hammingDistance(x int, y int) int {x x ^ yvar count 0for x ! 0 {x x & (x - 1)count}return count }

《C++ Primer 第五版》(第6.3~6.7节)——返回指向数组/函数的指针,函数重载,默认形参、inline函数和constexpr函数

1.返回指向数组/函数的指针 顾名思义&#xff0c;就是函数返回值为指向数组/函数的指针。 数组的性质&#xff1a;不能被拷贝&#xff0c;函数也不能返回数组。但可以返回数组指针/引用&#xff0c;声明一个返回数组指针的函数&#xff0c;有四种方式&#xff0c;一种是直接声明…

136. 只出现一次的数字 golang

Me 1. 先排序就好做了 执行用时 :16 ms, 在所有 Go 提交中击败了27.90%的用户 内存消耗 :4.7 MB, 在所有 Go 提交中击败了100.00%的用户func singleNumber(nums []int) int {sort.Ints(nums)for i:0; i < len(nums); i {if i len(nums) - 1 {return nums[i]}if nums[i] …

《C++ Primer 第五版》(第1~6章总结)

1.C采用标准库文件iostream定义的两个对象来实现IO机制。 2.代码注释应解释关键数据的变量含义和代码完成了什么功能&#xff0c;力求简洁易懂。 3.正确理解初始化和赋值&#xff0c;声明和定义的含义&#xff1f;初始化是在定义对象的时候同时赋值&#xff0c;赋值是定义对象…

268. 缺失数字 golang

Me 首项加末项乘以项数/2.就是总和。然后剪掉nums里面的数组和 func missingNumber(nums []int) int {var sum intlens : len(nums)for _, value : range nums {sum value}return ((1 lens) * lens) / 2 - sum }

使用touch更新文件的时间

#&#xff01;/bin/bashfunction read_dir() {for file in ls $1doif[-d $1"/"$file]thenread_dir $1"/"$fileelseecho $1"/"$filetouch $1"/"$filefidone }read_dir ./

231. 2的幂 golang

Me func isPowerOfTwo(n int) bool {return n > 0 && (n & (n-1)) 0 }

linux/windows上STM32固件烧写工具的开发demo

1.主要实现功能&#xff1a;完成对HEX和DFU文件的烧写&#xff0c;显示烧写的进度等功能 2.开发工具:Qt creator4.9.0 3.开发系统平台&#xff1a;windows系统和linux系统两套平台 4.具体开发步骤&#xff1a; 1&#xff09;设计整体的界面&#xff0c;包括文件选择界面(dfu和h…

338. 比特位计数 golang

Me func countBits(num int) []int {result : make([]int, num1)for i:0; i<num; i {result[i] numberOne(i)}return result }func numberOne(x int) int {if x 0 {return 0}var count intfor x ! 0 {x x & (x - 1)count}return count }

Qt使用qss文件管理stylesheet

内容总结简介&#xff1a; 1&#xff09;使用.qss后缀的文件来管理Qt中每个类的具体组件的stylesheet设置。 2&#xff09;在类中使用具体.qss文件中的设置。 3&#xff09;解决控件中多个相同组件不同设置或者同一个控制不同子控制或者伪状态的问题。 1.新建后缀名为.qss的文…

283. 移动零golang

Me 遍历所有数组&#xff0c;统计0的个数倒着把零写入数组末尾 func moveZeroes(nums []int) {var count, j intfor _, key : range nums {if key 0 {count} else{nums[j] keyj}}for i:len(nums) - count; i < len(nums); i {nums[i] 0} }最优解(快慢指针) 减少了数组…

QT自定义MainWindow

1.开发环境&#xff1a;Qt 4.7.3 MinGW 32bit (MSVC2015 32bit) 2.实现大纲&#xff1a; 1&#xff09;自定义边框&#xff0c;标题栏&#xff0c;工具栏&#xff0c;内容栏&#xff0c;状态栏&#xff08;后面三个代码中没有实现实现&#xff09; 2&#xff09;重写鼠标事件…

485. 最大连续1的个数 golang

Me func findMaxConsecutiveOnes(nums []int) int {max : 0for i,j : 0, -1; i < len(nums); i {if nums[i] 0 {j i} else {if max < i -j {max i - j}}}return max }

QTextEdit实现图片和文本同行显示

1.开发环境&#xff1a;Qt 4.7.3 MinGW 32bit (MSVC2015 32bit) 2.实现大纲&#xff1a; 1&#xff09;实现图片和文本在同一行显示&#xff0c;且能够设置字体大小和颜色 2&#xff09;能够手动设置行的宽度和间距 3&#xff09;设置字体样式&#xff0c;然后添加图片&#…

3. 无重复字符的最长子串 golang

官解 func lengthOfLongestSubstring(s string) int {n : len(s)ans : 0subMap : make(map[byte]int)for i, j : 0, 0; j < n; j {if v, ok : subMap[byte(s[j])]; ok {if i < v {i v}}if ans < (j - i 1) {ans j - i 1}subMap[byte(s[j])] j 1}return ans }

QQuickWidget + QML编程实现酷炫动态动画效果

1.具体需求&#xff1a;当Qt开发项目中需要实现简单的动态酷炫动画效果时&#xff0c;我们可以使用Qt中的QQuickWidget来实现&#xff0c;同时还可以使用QML编程来实现具体的动画效果&#xff0c;具体实现的效果如下所示&#xff1a; 2.具体操作和实现效果图&#xff1a; 1&am…

Qt中的四种信号与槽的连接方式

1. UI界面右键点击控件&#xff0c;选择“转到槽“&#xff0c;系统会在cpp中自动添加这个组件对应的槽函数 2.在Ui界面的下面 siga如l & slot editor栏中手动添加 3.在代码中使用connect显示添加 4. 使用on_对象名_事件名隐式连接&#xff0c;以QPushButton为例 QPushBut…

20. 有效的括号 golang 堆栈

借用arraystack的包完成 import "github.com/emirpasic/gods/stacks/arraystack"func isValid(s string) bool {stack : arraystack.New()for _, c : range s {if c ( {stack.Push())} else if c [ {stack.Push(])} else if c { {stack.Push(})} else {if stack.…

215. 数组中的第K个最大元素 golang

Me func findKthLargest(nums []int, k int) int {sort.Ints(nums)return nums[len(nums)-k] }golang实现快排和冒泡排序 1. bubbleSort // method2 func swap(a *int, b *int) {temp : *a*a *b*b temp }func bubbleSort(nums []int) {for i:0; i < len(nums); i {for…