从操作系统的角度来看,异常是如何工作的?
作为一名C++程序员,我能够理解异常的工作原理。当抛出异常时,堆栈开始展开,每个激活记录都有机会捕获和处理异常。
但首先抛出异常的责任是谁呢?
- 是操作系统向进程发送触发信号,告诉它进入“异常处理状态”吗?
- 还是进程在自己的程序空间中调用和处理异常,对操作系统保密?
以下是两个崩溃的程序,说明了我的不确定性。
int main(){
int i = 1/0; //did the OS tell the process to end?
return 0;
}
#include <exception>
int main(){
throw 11; //did the process tell the OS it needs to end?
return 0;
}