C++函数后面加throw关键字的含义
1、对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()函数,退出程序。
2、异常抛出后的处理
函数声明和定义后的throw表达式是异常规范(exception specification),保证这个函数只应该抛出指定类型的异常,如果违反则在运行期调用std::unexpected()。如果异常规范允许抛出std::bad_exception,则标准库实现会在std::unexpected中抛出一个由实现定义的std::bad_exception对象;否
下一篇:
Linux下Java如何查看死锁