异常可以这样理解:
计算机执行一个连续的指令序列,如:a1,a2,a3,,,ak,这些指令执行的时候是顺序执行的,相邻的两条指令ak,ak+1在存储中也是相邻的,也就是说他们是一个平滑的指令流。
而有时候这种指令流会发生突变,也就是说相邻执行的两条指令ak,ak+1在存储器中是不相邻的。造成这种突变的可能有:跳转,函数调用,返回等。今天我们所讨论的异常,也是造成这种指令流突变的原因之一。
所以异常可以认为是指令顺序执行的时候,突然跳转到别的地方执行指令。
现在就可以来看相对专业的说法了:异常是控制流中的突变,用来相应处理器状态中的某些变化。
可以通过下图来更好的理解上述内容:
那么异常处理结束后计算机中的指令如何继续往下执行呢?根据触发异常的种类,会有三种情况:
1)处理程序将控制返回给当前指令I currr,即当事件发生时正执行的指令。
2)将控制返回给下一条指令,即如果没有发生异常的下一条指令。
3)终止发生异常的程序。