lgxqf  

第二十三章 结束处理程序

 

1.结构化异常处理

SEH是由编译器实现的,不同编译器在实现SEH时会有些区别。它是Winodws特有的技术。

SEHC++异常是两种不同的异常机制。在VCC++异常是基于SEH实现的。

 

2.结构化异常处理用法

(1)__try

              __try后必须接__finally__except中的一个,且只能有一个。

              __try中有return,break,continue等语句,在执行这些语句前,系统会先调用__finally中的代码然后再跳回到return,break,continue继续执行。

              __try中有ExitThread,ExitProcess等语句,线程或程会立刻退出而不会执行__finally中的代码。

 

(2)__leave

              __try中有__leave,代码会从该处跳到__try的未端,直接执行__finally中的代码,然后继续向下执行,而不会跳回到原处。

              建议将程序中的return,break,continue等语句换成__leave

 

(3)__finally

              它不会处理程序中的异常,但会处理程序中的goto,break,continue,return等语句。

AbnormalTermination()函数只能在__finally块中用,它用于判断程序是因顺序执行到__finally处,还是因return,goto等语句跳到__finally处。

 

 (4)__except

                只有当__try块中的代码产生异常时,__except中的代码才会执行。

                若程序中有异常且无__except,那么程序会异常退出。

posted on 2009-03-18 13:59  Justin_Ma  阅读(214)  评论(0编辑  收藏  举报