throw()使用小结
来源:互联网 发布:java酒店管理系统需求 编辑:程序博客网 时间:2024/05/11 23:47
throw()使用小结
为什么要加一个throw()到你的函数中?这是异常规范,只会出现在声明函数中,表示这个函数可能抛出任何类型的异常
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()函数,退出程序。
假如你加一个throw()属性到你的永远不会抛出异常的函数中,编译器会非常聪明的知道代码的意图和决定优化方式。考虑下面的代码:
class MyClass
{
size_t CalculateFoo()
{
:
:
};
size_t MethodThatCannotThrow() throw()
{
return 100;
};
void ExampleMethod()
{
size_t foo, bar;
try
{
foo = CalculateFoo();
bar = foo * 100;
MethodThatCannotThrow();
printf(\"bar is %d\", bar);
}
catch (...)
{
}
}
};
当编译器看到这个带\"throw()\"属性代码的时候,编译能够优化这个\"bar\"变量,因为它知道从MethodThatCannotThrow()函数中不会抛出任何的异常。如果没有这个throw()属性,编译器必须创建这个\"bar\"变量,因为假如MethodThatCannotThrow抛出了一个异常,这个异常句柄可能会需要依靠这个bar变量。
另外,象prefast源代码分析工具能够(也会)用throw()注释去优化他们的错误检测能力----举个例子,假如你有一个try/catch而且所有调用的函数都已经标记了throw(),实际上你不需要这个try/catch(是的,假如你最后调用的函数可能抛出异常这就会有个问题了)。
0 0
- throw()使用小结
- throw()使用小结
- throw()使用小结
- 最新关于try ,catch,throw的使用小结
- throw()使用小结:More effective C++:审慎使用异常规格(转),简单举例
- try catch throw 使用
- 使用throw抛出异常
- 何时使用throw
- 使用throw抛出异常
- 使用throw抛出异常
- 使用throw抛出异常
- 异常控制try-throw-catch用法小结
- throw与throws的使用
- 如何使用try catch throw
- c++ 使用throw抛出异常
- c++ 使用throw抛出异常
- 使用throw关键字抛出异常
- c++ 使用throw抛出异常
- CKEditor图片上传实现详细步骤(使用Struts 2)
- SQL Server修改表结构后批量更新所有视图
- txt文件导入数据库,出现file not found错误。
- 写给fourinone的用户
- mysql 字符串连接
- throw()使用小结
- 点类派生直线类(修改)
- java多线程设计模式——学习笔记(2)Single Threaded Execution Pattern
- C++函数后面的throw()
- 【转】linux shell -- 块注释
- Linux下PCI转串口卡驱动安装方法
- 分辨率常识
- 一些编程上的策略
- ASCII 编码