函数后面加throw关键字
【1】为什么函数后面加throw关键字?
C++函数后面加关键字throw(something)限制,是对这个函数的异常安全性作出限制。
举例及解释如下:
void fun() throw() 表示fun不允许抛出任何异常,即fun是异常安全的。
void fun() throw(...) 表示fun可以抛出任何形式的异常。
void fun() throw(exceptionType) 表示fun只能抛出exceptionType类型的异常。
还不明白吗?看这个解释(一个形象笑话):
throw() 大概会说:“噢,不管你抛什么,就是不准抛。”
throw(...) 呵呵一笑,满脸慈祥:“抛吧抛吧,尽情地抛吧。”
throw(type) 一听急了:“那可不行,要抛也只能抛我的香烟头,否则要是不小心把俺祖传的金戒指抛掉就太亏了。”
尤其注意这是异常规范,只会出现在声明函数中,表示这个函数可能抛出任何类型的异常。
void GetTag() throw(int); 表示只抛出int类型异常
void GetTag() throw(int,char); 表示抛出in,char类型异常
void GetTag() throw(); 表示不会抛出任何类型异常
void GetTag() throw(...); 表示抛出任何类型异常
那么,void GetTag() throw(int); 表示只抛出int类型异常 这句解释怎么理解呢?
并不表示一定会抛出异常,但是一旦抛出异常只会抛出int类型。
如果抛出非int类型异常,调用unexsetpion()函数,退出程序。
Good Good Study, Day Day Up.
顺序 选择 循环 总结
函数后面加throw关键字的更多相关文章
- C++函数后面加throw关键字简记
看代码时候看到fun() throw()的用法,找到一篇blog解释很简单,如下: C++函数后面加关键字throw(something)限制,是对这个函数的异常安全性作出限制. 举例及解释如下: v ...
- C++函数声明后面加throw()的作用
原文地址:https://blog.csdn.net/to_baidu/article/details/53763683 C++里面为什么有时候在函数声明的时候在后面加throw()关键字? 解释: ...
- 在函数中修改全局变量的值,需要加global关键字
一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if ...
- C++函数后面加const修饰
声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object). 为了声明一个const成 ...
- 成员函数后面加const,没有const,以及使用的区别
函数后面加const 编译器会自动给每一个函数加一个this指针.在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量的(加了mutable修饰的除外,后面有讲).实际上,也就是对 ...
- (转)函数后面加const--C++ const成员函数
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于 ...
- python3中匿名函数做参数,匿名函数做实参,eval关键字
一:说到匿名函数,大家都感到陌生又熟悉,今天我带大家了解一下py3中的匿名函数,以及匿名函数作为函数的参数的情况 主要通过以下实例来说明: 实例一: newarr =[33,44444,6222,88 ...
- C++ 函数后加const
1.非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)2.表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中, 任意修改它所在的类的成员的操作都是 ...
- 在类成员函数后面加const
在看开源代码时,经常会看到在类的成员函数后面加const,之前了没有太关注过,近来闲来无事,就想起这件事,网上查了一下,大概明白了是怎么回事,这里引用CSDN愽文里的段话:“编译器会自动给每一个函数加 ...
随机推荐
- CXF入门例子
1. WebService实现类:@WebService注解表示这个类发布为一个WebService服务. package com.coshaho.learn.cxf; import javax.jw ...
- Redis实现分布式锁
http://redis.io/topics/distlock 在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段. 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器,但 ...
- iOS 面试题及答案
1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...
- 选择时区的命令tzselect
选择时区的命令tzselect tzselectPlease identify a location so that time zone rules can be set correctly.Plea ...
- 56个睿智帅气貌美的CTO大牛陪你叨逼叨
技术领域门槛高,苦读十年有时不如大牛一指点 可CTO级别的大牛何处找? 别急,别急 他们1月12日都去参加APICloud新品发布会了! (没图说啥子) 各路大牛们云集,不仅是为APICloud新品发 ...
- Android --固定底部
相对布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...
- ORA-15260: permission denied on ASM disk group
向ASM磁盘组添加新的磁盘的时候,报了以下错误: $ sqlplus '/as sysdba' SQL*Plus: Release 11.2.0.4.0 Production on Sat Dec 2 ...
- 有关于break,continue,return的区别和代码分析
今天,用代码和结果直接解释break,continue,return的区别 1.break代码 public static void breakTest() { //break的讲解 for(int ...
- Swift游戏实战-跑酷熊猫 06 创建平台类以及平台工厂类
这节内容我们一起学习下随机长度的踩踏平台的原理是怎么样的. 要点: 平台类 我们的平台类继承于SKNode,这样就能被添加进其它节点进而显示在场景中. 它有一个方法来创建平台,这个方法接收一个包含SK ...
- 成员变量&&局部变量
一.相同点:1.都遵循变量的声明格式:(修饰符) 数据类型 变量名=初始化值 2.都有各自的作用域 二.不同点:1.声明的位置不同 成员变量:声明在类内,方法外. 局部变量:声明在方法内. ...