C++里面为什么有时候在函数声明的时候在后面加throw()关键字?

解释:

C++函数后面加关键字throw(something)限制,是对这个函数的异常安全作出限制;这是一种异常规范,只会出现在声明函数时,表示这个函数可能抛出任何类型的异常。

void fun() throw();      //表示fun函数不允许抛出任何异常,即fun函数是异常安全的。

void fun() throw(...);    //表示fun函数可以抛出任何形式的异常。

void fun() throw(exceptionType);    // 表示fun函数只能抛出exceptionType类型的异常。

举例说明:

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()函数,退出程序。

void GetTag() throw();  假如你加一个throw()属性到你的永远不会抛出异常的函数中,编译器会非常聪明的知道代码的意图和决定优化方式。

java函数名没有加throw_C++函数声明后面加throw()的作用相关推荐

  1. C++之指针探究(十一):函数名的本质和函数指针

    相关博文:C++之指针探究(十三):函数指针数组 相关博文:C++之指针探究(十二):指针.下标.数组及其作函数参数探究 相关博文:C++之指针探究(十一):函数名的本质和函数指针 相关博文:C++之 ...

  2. 函数名地址、函数名取地址、函数名解引用问题

    以下,转载自http://blog.sina.com.cn/s/blog_6aafe9c90100xg2y.html 对一个函数进行 如下操作: 1.函数名地址 2.函数名取地址 3.函数名解引用 它 ...

  3. linux打印函数名,linux kernel 打印函数指针对应的函数名方法

    linux kernel 打印函数指针对应的函数名方法 内核中函数指针用的很多,在debug 的时候能直接打印出一个函数指针对应的函数就会很方便. 打印裸指针(raw pointer)用 %p,%p除 ...

  4. 吐槽程序员的变量名和函数名(给变量和函数取名字时遇到的坑)

    变量和函数在取名字的时候,一定要见名知意,不要用太宽泛的词! 能一看到函数名就知道这个函数是干嘛的,比写个注释看着舒服! 不要怕名字太长,宁愿名字长一点也比名字简短但又看不懂的名字要好! 名字清晰冗长 ...

  5. android 函数名注册,Android JNI 函数注册的两种方式(静态注册/动态注册)

    在Android开发中,由于种种原因我们需要调用C/C++代码, 这个时候就要用到Android开发者都听说过的JNI(Java Native Interface)了, 在调用JNI相关方法之前, 要 ...

  6. 如何通过函数名的字符串运行函数(从dll动态库谈起,使用c++)

    1.问题描述 比如现在有一个函数叫MyFunc,现在想通过函数名调用该函数,该怎么办呢? 2.概述 如果这个问题是JAVA语言,我们会很自然的想到反射来解决这个问题,但是c++中没有反射,该怎么办呢? ...

  7. c 打印 callback 函数名_Go 中的函数

    1. 函数参数和返回值的写法 如果有多个参数是同一个类型,可以简略写: func testReturnFunc(v1,v2 int)(int,int) {x1 := 2 * v1x2 := 3 * v ...

  8. c++ public 函数名相同_C++虚函数、重载、覆盖

    C++基础(五)虚函数.重载.覆盖.隐藏 虚函数总是跟多态联系在一起,引入虚函数可以使用基类指针对继承类对象进行操作!虚函数:继承接口(函数名,参数,返回值),但是实现不继承(函数体) 非虚函数:继承 ...

  9. python 使用函数名的字符串调用函数(4种方法)

    先看一个例子: >>> def foo():print "foo">>> def bar():print "bar"> ...

最新文章

  1. linux 命令删除命令,Linux 命令之删除命令
  2. leetcode每日刷题计划-简单篇day8
  3. 沙滩鞋除臭法--针对常见户外沙滩鞋来讲
  4. dubbo服务者配置说明
  5. boost::hana::is_nothing用法的测试程序
  6. poj 2515 差分序列,排列组合
  7. 【东软实训】SQL多表链接
  8. 坦克大战python_Python语言学了没用?那只能说你是真的没有精通了Python语言
  9. 在整个数据库搜索某个字符串在哪个表的哪个字段中
  10. Anconda之常用命令汇总
  11. promise常见错误
  12. java学习class5
  13. asp.net使用Mysql乱码处理
  14. 菜鸟程序猿的工作心态
  15. vivo NEX的Usb调试模式在哪里,打开vivo NEXUsb调试模式的教程
  16. python语言后缀_在Python语言中,可以作为源文件后缀名的是
  17. 如何区分共射极放大电路与共基极放大电路?
  18. 关于刚安装的新系统的一些设置
  19. QQ通信原理--转载
  20. ntc温度控制程序 c语言,NTC热敏电阻温度计算以及C语言实现

热门文章

  1. UWP Composition API - GroupListView(一)
  2. typedef void(*Fun)(void);
  3. php SqlServer 中文汉字乱码
  4. 【SICP练习】101 练习2.77-2.78
  5. 使用清华开源镜像安装tensorflow
  6. 微信小程序_组件学习_001
  7. SpringBatch适配器详解
  8. helm部署postgresql
  9. python字符串截取:截取yaml文件名后3个字符
  10. redis中执行lua脚本命令