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的更多相关文章

  1. C++Primer 5th 练习 12.19

    这阵子真是太忙了, 连续做了四个课设. 当然这并不能作为好久没写博客的借口, 没写博客的主要原因只有一个: 懒. 最近又开始回顾C++的语法与特性(据说C++就是一门需要反复回顾的语言),以及学习C+ ...

  2. 【读书笔记】C++ primer 5th 从入门到自闭(一)

    这几天看了C++ primer 5th的一二章,有很多收获,但是有的地方因为翻译的问题也搞得理解起来颇为难受啊啊啊啊.尤其是const限定符,在C语言并没有这么多复杂的语法,在C++里面语法细节就多的 ...

  3. C++ Primer 5th 第1章 开始

    *****代码在Ubuntu g++ 5.31 / clang++ 3.8(C++11)下编写调试***** 每个C++程序必须有一个main( )函数,main( )函数的返回值也必须是int类型, ...

  4. c++ primer 5th 练习3.43

    #include <iostream> using namespace std; int main() { ][]={,,,,,,,,,,,}; /* for(int (&i)[4 ...

  5. C++ Primer 5th 第16章 模板与泛型编程

    模板是C++中泛型编程的基础,一个模板就是创建一个类或者函数的蓝图或者说公式. C++模板分为函数模板和类模板. 类模板则可以是整个类是个模板,类的某个成员函数是个模板,以及类本身和成员函数分别是不同 ...

  6. C++ Primer 5th 第15章 面向对象程序设计

    面向对象程序设计的核心思想是:数据抽象.继承和动态绑定. 数据抽象:将类的接口与实现分离: 继承:定义相似类型并对相似关系建模: 动态绑定:一定程度上上忽略相似类型间的区别,用同一方式使用它们. 1. ...

  7. C++ Primer 5th 第13章 拷贝控制

    当一个对象的引用或者指针离开作用域时,析构函数不会执行. 构造函数有初始化部分(初始化列表)和函数体. 析构函数有析构部分和函数,但析构函数的析构部分是隐式的.

  8. C++ Primer 5th 第12章 动态内存

    练习12.1:在此代码的结尾,b1 和 b2 各包含多少个元素? StrBlob b1; { StrBlob b2 = {"a", "an", "th ...

  9. C++ Primer 5th 第11章 关联容器

    练习11.1:描述map 和 vector 的不同. map是关联容器,vector是顺序容器,关联容器与值无关,vector则与值密切相关 练习11.2:分别给出最适合使用 list.vector. ...

随机推荐

  1. [转载]workbench分网---mapped face meshing面映射网格划分

    原文地址:face meshing面映射网格划分">workbench分网---mapped face meshing面映射网格划分作者:一丝尘埃 face meshing面映射网格划 ...

  2. 用win-acme给windows服务器添加SSL(Let's Encrypt)证书

    本文是我今天用win-acme给windows服务器添加SSL(Let's Encrypt)证书的一个过程,主要是给我自己备忘的. 1.首先先在github上下载最新版的win-acme. 下载地址: ...

  3. TortoiseGit的安装与配置

    1. 简介 TortoiseGit是Tortoise提供的Git版本可视化工具,简化Git记忆命令行的过程,将命令行可视化. 2. 下载 官网:https://tortoisegit.org/down ...

  4. django + vue3 解决跨越问题

    django跨域 解决: https://yq.aliyun.com/articles/517215 vue3 跨越(此处没必要,django处理即可): https://blog.csdn.net/ ...

  5. 反向代理Nginx

    引用:https://baijiahao.baidu.com/s?id=1600687025749463237&wfr=spider&for=pc 参考下图,正向代理用途:Client ...

  6. Oracle 11c下载 及连接到OracleDB的简单程序

    Oracle官网总是不太贴心.还是网友贴心. https://pan.baidu.com/s/1ZCFLUi4Ti_WUYOFR3gB2dA 是11g版本下载包,下载下来解压就能用了. 安装完毕后,驱 ...

  7. Json序列化指定输出字段 忽略属性

    DataContract 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务 ...

  8. Android资源文件命名规范学习手册

    [推荐] 资源文件需带模块前缀.[推荐] layout 文件的命名方式. Activity 的 layout 以 module_activity 开头 Fragment 的 layout 以 modu ...

  9. SurfaceView双缓冲技术引入

    package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.Canvas ...

  10. SurfaceView概述和基本使用

    Android屏幕刷新一遍时间间隔为16ms,如果view能够在16ms内完成所需要执行的绘图换作,那么在视觉上,界面就是流畅的,否则就会出现卡顿现象,在很多情况下,这些逻辑处理又是必须的,为了解决这 ...