C++Primer 5th Chap5 Statements
else语句对应的始终是最近的那条if语句,除非有{}强行控制,如:
if(A){
if(B){/*.............*/}
}else{/*.......*/}//这里else和if(A)对应
break和continue处理的都是离其最近的循环(if语句不算循环)
异常处理:
throw语句(引发异常),try语句块(处理异常),catch子句(结束try语句)
例如:throw:
if(item1.isbn()!=item2.isbn){
throw runtime_error("Data must refer to same ISBN!");}//抛出异常,中止函数(runtime_error为一种异常类型,在头文件stdexcept中)
cout<<item1+item2<<endl;
try:
while(cin>>item1>>item2){
try{
cout<<item1+item2<<endl;}//想要执行的语句
catch(runtime_error err){//若失败则执行catch语句,抛出runtime_error 异常
cout<<err.what()<<"\nTry again? Enter 'y' or 'n'"<<endl;
char c;
cin>>c;
if(!cin||c=='n')break;} }
标准异常:
头文件:
| exception | 定义最通用的异常类,只报告异常发生,无额外信息 |
| stdexcept | 定义几种常见的异常类 |
| new | 定义bad_alloc异常类型 |
| type_info | 定义bad_cast异常类型 |
stdexcept头文件中的异常类:
| exception | 常见问题 |
| runtime_error | 运行时才能检测到的问题 |
| range_error | 运行时错误:结果超出值域范围 |
| overflow_error | 运行时错误:上溢 |
| underflow_error | 运行时错误:下溢 |
| logic_error | 逻辑错误 |
| domain_error |
逻辑错误:参数对应结果值不存在 |
| invalid_argument | 逻辑错误:参数无效 |
| length_error | 逻辑错误:试图创建超出类型最大长度的对象 |
| out_or_range | 逻辑错误:使用超出有效范围的值 |
对exception,bad_alloc,bad_cast对象只能默认初始化(不提供初始值),其他类型用string或c字符数组初始化;
异常类只有what()唯一成员函数,返回c字符数组,提供异常信息。
C++Primer 5th Chap5 Statements的更多相关文章
- C++Primer 5th 练习 12.19
这阵子真是太忙了, 连续做了四个课设. 当然这并不能作为好久没写博客的借口, 没写博客的主要原因只有一个: 懒. 最近又开始回顾C++的语法与特性(据说C++就是一门需要反复回顾的语言),以及学习C+ ...
- 【读书笔记】C++ primer 5th 从入门到自闭(一)
这几天看了C++ primer 5th的一二章,有很多收获,但是有的地方因为翻译的问题也搞得理解起来颇为难受啊啊啊啊.尤其是const限定符,在C语言并没有这么多复杂的语法,在C++里面语法细节就多的 ...
- C++ Primer 5th 第1章 开始
*****代码在Ubuntu g++ 5.31 / clang++ 3.8(C++11)下编写调试***** 每个C++程序必须有一个main( )函数,main( )函数的返回值也必须是int类型, ...
- c++ primer 5th 练习3.43
#include <iostream> using namespace std; int main() { ][]={,,,,,,,,,,,}; /* for(int (&i)[4 ...
- C++ Primer 5th 第16章 模板与泛型编程
模板是C++中泛型编程的基础,一个模板就是创建一个类或者函数的蓝图或者说公式. C++模板分为函数模板和类模板. 类模板则可以是整个类是个模板,类的某个成员函数是个模板,以及类本身和成员函数分别是不同 ...
- C++ Primer 5th 第15章 面向对象程序设计
面向对象程序设计的核心思想是:数据抽象.继承和动态绑定. 数据抽象:将类的接口与实现分离: 继承:定义相似类型并对相似关系建模: 动态绑定:一定程度上上忽略相似类型间的区别,用同一方式使用它们. 1. ...
- C++ Primer 5th 第13章 拷贝控制
当一个对象的引用或者指针离开作用域时,析构函数不会执行. 构造函数有初始化部分(初始化列表)和函数体. 析构函数有析构部分和函数,但析构函数的析构部分是隐式的.
- C++ Primer 5th 第12章 动态内存
练习12.1:在此代码的结尾,b1 和 b2 各包含多少个元素? StrBlob b1; { StrBlob b2 = {"a", "an", "th ...
- C++ Primer 5th 第11章 关联容器
练习11.1:描述map 和 vector 的不同. map是关联容器,vector是顺序容器,关联容器与值无关,vector则与值密切相关 练习11.2:分别给出最适合使用 list.vector. ...
随机推荐
- Java基础系列 - 抽象类,子类继承
package com.company; /** * 抽象类继承 * 用abstract修饰类就是抽象类 * 用abstract修饰方法就是抽象方法(一般使用比较少) * 抽象类不能被实例化 */ p ...
- ICEMCFD中,face裂缝修复的小窍门【转载】
转载自:http://blog.sina.com.cn/s/blog_4a21884b010005ng.html 采用ICEMCFD画网格的初学者,都对由cad(proe/ug/solidworks) ...
- CSPS2019谢幕记
留坑待填. 开始填坑. Day -1 最后一场模拟题.T1花2h切掉,T2啥都不会,T3看出部分解法然后写了暴搜,教练没放子任务,得了45,然后就$rk3$了. 晚上疯狂写板子,1.5h写了8份板子. ...
- try 和 catch 的用法
try块是什么? 一个try块就是程序尝试去执行一段代码,try块后面会有几个异常处理块,如果try块中发生了异常,程序执行流就会进入相应的异常处理块中. 以下程序会帮助理解这个概念 #include ...
- Java-JUC(零):Java:现有线程T1/T2/T3,如何确保T1执行完成之后执行T2,T3在T2执行完成之后执行。
要实现多个线程执行完成先后,就要知道如何实现线程之间的等待,java线程等待实现是join.java的jdk中join方法实现如下: public final synchronized void jo ...
- yolov1, yolo v2 和yolo v3系列
目标检测模型主要分为two-stage和one-stage, one-stage的代表主要是yolo系列和ssd.简单记录下学习yolo系列的笔记. 1 yolo V1 yolo v1是2015年的论 ...
- POM 标签大全详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- OpenJudge计算概论-买房子
/*================================================================= 买房子 总时间限制: 1000ms 内存限制: 65536kB ...
- IO之Socket网络编程
一.Socket Socket不是Java中独有的概念,而是一个语言无关标准.任何可以实现网络编程的编程语言都有Socket. 1,Socket概念 网络上的两个程序通过一个双向的通信连接实现数据的交 ...
- rand随机函数
1.rand() rand()函数是使用线性同余法做的,它并不是真的随机数,因为其周期特别长,所以在一定范围内可以看成随机的. rand()函数不需要参数,它将会返回0到RAND_MAX之间的任意的整 ...