异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持,在C++语言中,异常处理包括:
    *throw表达式(throw expression),异常检测部分使用throw表带是来表示它遇到的了无法处理的问题,我们说throw引发了异常。
    *try语句块(try block),异常处理部分使用try语句处理异常。try语句块以关键字try开始,并以一个或多个catch自居结束。try语句快中代码抛出的异常通常会被某个catch自居处理。因为catch自居”处理“异常,所以它们也被称作异常处理代码。
    *一套异常类(exception class),用于在throw表达式和相关的catch自居之间传递异常具体信息。

例子:
    编写一段程序,从标准输入读取两个整数,输出第一个数除以第二个数的结果,使用try语句块去捕获异常。当第二个数是0时跑出异常,catch子句应该为用户输出一条提示信息,询问其是否输入新数并重新执行try语句块的内容。
#include
<iostream>
using
namespace
std;

int
main()
{
            
int
a,b;
            cout<<
"please input two integers\n"
;
            
while
(cin>>a>>b)
            {
               
try
{
                   
if
(b == 0)
                                       
throw
runtime_error
(
"分母不能为0"
);
//抛出异常
                                        cout<<
static_cast
<
double
>(a) / b<<endl;
                                cout<<
"please input two integers"
<<endl;
            }
               
catch
(
runtime_error
err) {
//捕获异常
                   cout<<err.what()<<endl;
                           cout<<
"Try again\nplease input two integers"
<<endl;
                }
            }
            
return
0;
}


Static 局部静态变量
#include
<iostream>
using
namespace
std;

size_t
add(
int
n
)
{
   
static
size_t
cnt = 0;
//size_t cnt = 0;输出答案0,1,2,3,。。。9;
            cnt +=
n
;
            
return
cnt;
}
int
main()
{
            
size_t
i;
            
for
(i = 0;i != 10;++i)
            {
                cout<<add(i)<<endl;
            }
   
return
0;
}

笔记:C++学习之旅---try语句和异常处理的更多相关文章

  1. WCF学习之旅—基于ServiceDebug的异常处理(十七)

    WCF学习之旅—WCF中传统的异常处理(十六) 二.基于ServiceDebug的异常处理 从前面的示例中,可以看到客户端捕获了异常,这是我们处理异常的前提.为了有利于我们进行有效的调试,WCF提供了 ...

  2. 笔记-JavaWeb学习之旅5

    CP30的演示 package cn.itcast.datasourcejdbc; import com.mchange.v2.c3p0.ComboPooledDataSource; import j ...

  3. 笔记-JavaWeb学习之旅14

    JSTL:JavaServer Pages Tag Library JSP标准标签库 if标签 <%@ page import="java.util.ArrayList" % ...

  4. 笔记-JavaWeb学习之旅10

    Servlet server applet运行在服务器端的小程序,servlet就是一个接口,定义了Java类被浏览器访问到的规则(Java类重写这个接口,就可以被浏览器(tomcat)识别) Ser ...

  5. 笔记-JavaWeb学习之旅7

    JavaScript基础 概念:一门客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎,是一个脚本语言,不需要编译,直接就可以被浏览器解析执行. JavaScript ...

  6. 笔记-JavaWeb学习之旅3

    数据库的设计 1.多表之间的关系 一对一 一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键 一对多 在多的一方建立外键指向一的一方建立主键 多对多 多对多关系实现需要借助第三张中间表.中间表 ...

  7. 笔记-JavaWeb学习之旅2

    数据库的基本概念 1.数据库:DataBase 简称 DB,用于存储和管理数据的仓库 特点: 1.持久化存储数据的,其实数据库就是一个文件系统, 2.方便存储和管理数据 3.使用了统一操作数据库 -- ...

  8. 笔记-JavaWeb学习之旅19

    Redis:redis是一款高性能的NOSQL系列的非关系型数据库 NOSQL: Not Only SQL ,意即"不仅仅是SQL",是一项全新的数据库理念,泛指非关系型数据库 r ...

  9. 笔记-JavaWeb学习之旅18

    AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...

  10. 笔记-JavaWeb学习之旅17

    1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...

随机推荐

  1. K8S—dashboard ui部署

    一.Dashboard UI概述 仪表板是基于Web的Kubernetes用户界面.您可以使用仪表板将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随 ...

  2. [Unity移动端]gradle打包

    建议先看一下这篇文章: https://linxinfa.blog.csdn.net/article/details/118553713?spm=1001.2101.3001.6650.10& ...

  3. OpenJudge2811:熄灯问题(枚举)

    熄灯问题 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行.每个按钮的位置上有一盏灯.当按下一个按钮后,该按钮以及周围位置(上边.下边.左边.右边)的灯都会改变一次.即,如果灯原来是点亮的,就会被熄 ...

  4. Sleuth 使用

    sleuth是spring cloud中日志链(调用链解决方案),自动添加traceId,spanId. sleuth包也可单独引入,和其它藕合度小.sleuth + zipkin 实现APM管理. ...

  5. 图像主题颜色提取(Median cut)

    前言 之前想对图片素材进行分类管理,除了打标签,还有一样是通过主题色进行分类.于是开始寻找能提取主主题色的工具,最后找到了大名鼎鼎的 Leptonica 库,其中就有中位切割算法的实现.下面附上中位切 ...

  6. IP rDNS(PTR)信息从理解到情报挖掘

    什么是IP的rdns信息? 过去很多人,将IP的rDNS信息理解为解析到IP的反查域名信息.IP的rDNS信息和IP反查域名信息完全是两个不同的信息.IP的rdns信息被称之为反向DNS解析(rDNS ...

  7. SpringBoot笔记--配置文件分类+yaml相关知识+读取配置文件内容

    配置文件 要是需要使用自己的配置替换默认配置时,需要使用后缀名为application.properties或者application.yml(application.yaml)进行配置 当然,几个文 ...

  8. pip更新一直time out 的解决方法

    python -m pip install -U --force-reinstall pip 或者指定安装的镜像, 这里以安装numpy为例,运行pip install numpy -i http:/ ...

  9. 雪花算法 SnowFlake 内部结构【分布式ID生成策略】

    更多内容,前往IT-BLOG 一.前言   如何在分布式集群中生产全局唯一的 ID?[方案一]UUID:UUID是通用唯一识别码 (Universally Unique Identifier),在其他 ...

  10. XAML 设计器已意外退出。(退出代码: e0434352)

    一.前言 开门见山,这个问题我遇到过两次,第一次因为项目刚开始不长时间,我查了很长时间都没解决,然后就直接重写了,几乎一样的写法,但问题没复现了,但程序员思维告诉我,一定还是有比较关键的地方出现了问题 ...