Feed on
Posts
Comments

Tag Archive '备忘'

C和C++的异常处理

异常(Exception)是程序可能检测到,运行时刻不正常的情况,如被0除、数组越界访问或者堆空间申请失败等等。
标准C并没有提供异常处理机制,但是提供了两个特殊的函数:setjmp()和longjmp(),这两个函数是结构化异常的基础,C里可以利用这两个函数的特性来实现异常。在头文件setjmp.h里有两个函数一个类型(jmp_buf):
int setjmp ( jmp_buf env );
void longjmp (jmp_buf env, int val);
C.1 jmp_buf是一个结构体,用于保存当前程序现场(保存当前需要用到的寄存器的值),结构如下:
typedef struct
{
unsigned j_sp; // [...]

Read Full Post »