问SEH

逝水流风 2013-12-26 11:19:31
我觉得异常是属于函数的,就是对函数错误输入的检测,若输入正确,函数也就必定能正确处理。完整的说,异常就是在一次函数调用过程中对输入的检测。
在老罗的《windows32位环境下的汇编程序设计》的SEH一章中,避开了两个问题:1.如何触发指定异常。2.seh节点如何判断自己是否能处理。若这两个问题不解决,那seh链就只能有一个节点,若这样,seh和过滤器又有何区别呢?请各位大神解决我这两个疑问!
...全文
261 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
大熊猫侯佩 2014-01-10
  • 打赏
  • 举报
回复
引用 楼主 u013291756 的回复:
我觉得异常是属于函数的,就是对函数错误输入的检测,若输入正确,函数也就必定能正确处理。完整的说,异常就是在一次函数调用过程中对输入的检测。
先不看你下面的内容,这一段就有问题。 首先输入正确这个前提很难100%满足,尤其是接口复杂的函数,需要测试的范围太大,保不齐会有测试漏洞,你 以为输入正确,实际上输入是错的; 其次即使输入正确,函数也未必正确处理,这是因为函数可能会依赖系统接口,举个例子:系统内存不足,你输入 是正确,但函数必定无法正确执行。
  • 打赏
  • 举报
回复
1.建议楼主先区分一下什么是同步异常处理方法,异步异常处理方法 2.fs寄存保存着异常处理函数链表的头,seh就是根据它找到对应的异常处理函数的.
www_adintr_com 2014-01-09
  • 打赏
  • 举报
回复
SEH 异常不是对函数输入的检测! 它是底层的 CPU 报告给操作系统的! 触发异常的方式很多,比如访问了非法的内存,除 0 了,运行到错误的指令,企图执行特权指令等等,它可以捕获不是你手动触发的异常。并不是语言层次的参数错误,如找不到文件之类的。当然你可以自己用代码来检测参数错误,然后用 RaiseException 函数来触发一个异常。 判断能否处理主要是根据异常的类型,出错的位置,相关寄存器的内容这些来判断。
逝水流风 2014-01-09
  • 打赏
  • 举报
回复
没人回答么。。。。。。。。。。。。。。。。。。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧