一般
try..catch
块语句都用在函数体内,但是也有例外的时候,对于作者这种懒人,写语句能省则省。看看我是怎么操作的吧。
{}
,实则下面这段函数是没问题的。void func()
try {
printf("This is a function.");
}
catch (...) {
}
void func()
{
try {
printf("This is a function.");
}
catch (...) {
}
}
先看看try块的语法:
一般以下形式表示:
catch
称为处理块序列(可以是多个)catch
)中。try {
...
}
catch (...) {
...
}
解开魔法
当然有用啦。存在即合理,这魔法当然需要做点什么啦?!
class A
{
public:
A(int count) try : m_count(count) {
new B();
...
throw;
}
catch (...) {
// 清空构造函数所产生的内存, 如清空new B()申请的内存。
}
~A() try {
}
catch (...) {
}
private:
int m_count;
};
DEBUG
宏即能使用try...catch
机制。void func()
#ifdef DEBUG
try
#endif
{
... // 一些操作
}
#ifdef DEBUG
catch(...) {
}
#endif /* DEBUG */