当你写一个 catch
子句时,必须确定让异常通过何种方式传递到 catch
子句里。你可以有三个选择:
1.指针2.传值3.引用
通过指针
通过指针方式捕获异常在理论上这种方法的实现对于这个过程来说是效率最高的。因为在传递异常信息时,只有采用通过指针抛出异常的方法才能够做到不拷贝对象。比如:
class exception {
... }; // 来自标准 C++库(STL)
// 中的异常类层次
// (参见条款 12)
void someFunction()
{
static exception ex; // 异常对象
...
throw &ex; // 抛出一个指针,指向 ex
...
}
void doSomething()
{
try
{
someFunction(); // 抛出一个 exception*
}
catch (exception *ex)
{
// 捕获 exception*;
... // 没有对象被拷贝
}
}