不用setjmp/longjmp的思路是?讲讲学习一下。
我断断续续看过异常处理好几次,没考虑过怎么自己实现,trap a hardware exception。这个实现还是挺简单的,很有启发性:
1 安装handler,setjmp
2 根据setjmp第一次返回值,执行 try 代码,
2.1 如果异常,跳到handler,拷贝 record和context, longjmp,回到 1,转3
3 根据setjmp第二次返回值,执行 except 代码
4 出作用域,移除当前handler
这种执行一半跳到另一个函数,处理一下,再跳回来带着返回值,很像cpp coroutine 的思路。
【 在 z16166 的大作中提到: 】
: 按说不需要setjmp/longjmp
: 不过要捕捉空指针异常,这个需求本身就有问题
:
--
修改:DoorWay FROM 61.185.186.*
FROM 61.185.186.*