异常处理的返回
异常可以分为四类:中断(interrupt)、陷阱(trap)、故障(fault)和终止(abort)。 这几种异常处理之后又有不同的返回方式,总的来讲:
类别 |
原因 |
异步/同步 |
返回行为 |
中断 |
来自I/O设备的信号 |
异步 |
总是返回到下一条指令 |
陷阱 |
有意的异常 |
同步 |
总是返回到下一条指令 |
故障 |
潜在可恢复的错误 |
同步 |
可能返回到当前指令 |
终止 |
不可恢复的错误 |
同步 |
不会返回 |
中断
中断是来自I/O设备的信号,在中断处理结束后会返回下一条指令。
陷阱
陷阱是有意的异常,是执行一条指令的结果。就像中断处理程序一样,陷阱处理程序将控制返回到下一条指令。
故障
故障由错误情况引起,它可能能够被故障处理程序修正。根据故障是否能够被修复,故障处理程序要么重新执行引起故障的指令,要么终止。
终止
终止是不可恢复的致命错误造成的结果,通常是一些硬件错误。Linux/x86-64系统中的异常终止处理程序将控制传递给一个内核abort例程,该例程会终止这个应用程序。
以上参考《深入理解计算机系统 原书第三版》