_try_finally原理探究
2023-12-13 13:07:34
无论try
结构体中是什么代码,都会执行finally
里面的代码
局部展开
当try
里面没有异常,而是return
、continue
、break
等语句时,就不会走_except_handle3
这个函数,而是调用_local_unwind2
进行展开
然后调用[ebx + esi*4 + 8]
跟进去就到了finally
语句块的地方
我们探究一下实现的原理,这里本来应该是lpfnFilter
参数,指向异常处理过滤的代码的地址,但是这里是0。只要这个地方的地址为0就是finally
语句块
__global_unwind2
函数最终会调用一个RtlUnwind
函数,该函数内容比较杂乱,其大体流程如下
全局展开
全局展开就是一层一层的向上找异常处理函数,finally
模块还是照常执行
文章来源:https://blog.csdn.net/2301_80520893/article/details/134926041
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!