使用__try __finally和do while
在编写代码时,比如一个函数中有四个操作步骤,分别为1、2、3、4。每一步都依赖前一步骤成功才能继续。
如果每一步都会生成资源,然后退出函数时需要释放。
如果在每一步之后都检查成功,失败就释放资源,那么第二步骤失败需要释放第一步骤资源,第三步骤失败需要释放第一、第二步骤资源,这样代码冗余,而且容易忘记释放资源,在这种情况下可以使用如下两种结构
1、__try __finally异常终止结构
2、do while结构
在__try __finally结构中,如果某一步骤失败,直接使用__leave编译器关键字,就可以到达finally。在__finally代码块中统一检查资源并释放。
在do while结构中可以使用如下:
do
{
//代码只会执行一次
}while(FALSE)
由于while后是FALSE,所以do中的代码只会执行一次,如果某一步骤失败,直接使用break关键字跳出do while代码块。代码可读性也比较好。