Try-finally语句

作者在 2010-08-05 00:24:37 发布以下内容
Try-finally语句是微软对C语言做的 扩展(不通用),以保证某个代码段执行中断之时程序能够执行“清除”代码。“清除”代码主要用于执行释放内存、关闭文件以及释放文件句柄等任务。如果一个函数中有多 处需要进行错误检查,并且检查出错误后就需要从函数中退出,那么这时候try-finally语 句就显得格外有用。


try-finally语句语法:

__try 复合语句
__finally 复合语句

 


__try后 面的复合语句是受保护的区域。__finally后面的复合语 句是终止处理语句。无论受保护区域是正常终止还是异常终止(比如goto,return,leave等),当它退出的时候,终止处理语句都要执行。


__leavetry-finally语句里有效。__leave的效果是直接跳到try-finally的结尾,立马执行终止处理语句。尽管goto语句能够达到相同的效果,但goto会导致堆栈展开( stack unwinding)。因此__leave语句更有效,因为它不包含堆栈展开。


 

return语句或运行时函数longjmp退 出try-finally语句属于异常终止。跳进__try语句是非法的,但跳出却是合法的。在跳离点与目的点的代码之间, 所有的__finally语句都处于激活态。这就是所谓的“本 地展开”。

 


正在执行try-finally语句的进程被杀死,那么终止处理语句将不会执行。
基础知识 | 阅读 1386 次
文章评论,共0条
游客请输入验证码
浏览1970393次