一个函数可以有多个 try 这是没问题的,所以 函数和try的关系是一对多的关系.
一个try有多个catch也是没有问题的.那么对应关系也是一对多.
所以操作系统为了管理这些.需要建表....catch信息表(msRTTIDsrc),里面有4个成员, nflag 一个标志,表示你是常量,还是变量,还是引用. ptype,表示你的类型是什么类型.是int,还是float什么的,这个有个专门的表格存放着...,通过最后一个成员,可以找到Try块信息表.
2.找到Try块信息表
?
可以看到Try块信息表中有几个Catch信息.
3.找到Catch信息表.
?...正确找到了Catch块了.
2.下半部分表格详解.
上面的部分是针对我们还原做的.下半部分主要就是找我要快速定位这个异常是谁接受的,那个catch块处理的.
?...通过异常信息表的第二个参数,也就是类型表,可以看是哪个匹配的.而且对类型表做一个引用,看谁引用类类型表,则能找到catch的函数地址.当然这一步是还原的动作.
4.找到类型表.对类型表做一个交叉引用.