C++异常捕获的误区

By hakka. Filed in 技术随笔  |  
Tags: , , , ,
TOP

C++中的异常捕获机制

try
{
...
}catch(Exception&)
{
 
AddLog(记录错误信息到日志)
}

很深入人心,在大多数情况下,这种用法是没有问题的,但是下面的用法会导致二度异常,会在排错上造成麻烦

try
 
{
 
...
 
ErrorObj
 
}catch(Exception&)
 
{
 
AddLog(ErrorObj出错了)
 
}

原因是,ErrorObj这个对象已经失效,本意是在ErrorObj失效的时候捕获这个异常并输出到日志,但当再次引用的ErrorObj的时候,由于再也没有对这个异常进行再次异常捕获,程序当然就当了。

Leave a Reply