捕获数学函数异常
2010-01-23 20:32:27 来源:WEB开发网核心提示:编译、运行,结果为-0.813008Error function name is powThe varianbles arg1=-1.23,arg2=-1.1The error type = _SINGThe error value=-1.#INDAfter handling error value=12341234P
编译、运行,结果为
-0.813008
Error function name is pow
The varianbles arg1=-1.23,arg2=-1.1
The error type = _SING
The error value=-1.#IND
After handling error value=1234
1234
Press any key to continue
第一行为-1.23的倒数,第二~六两行是_matherr函数的输出,第七行是主函数的输出。
也许有人会说,main函数并没有调用_matherr函数,为什么会出现这种情况呢?这就是VC++编译器为我们做的事情了。它很有可能在数学函数中设置了跳转来实现异常处理,当数学库中的符点函数探测到一个错误时,就调用此函数。下面是有关_matherr函数的一些说明:
1、返回值:类型是整型的。按惯例,0返回值用来标志一个错误,非0值标志成功。如果返回0,则错误信息可被显示,错误序号被正确设置。如果返回非0值,没有显示错误信息,错误序号也保持不变。
2、参数:except指针指向一个包含错误信息的结构 struct _exception。
_exception结构包含有如下数据成员:
int type 异常类型;
char *name 出错函数名;
double arg1, arg2 函数的第一和第二(如果有的话)参数;
double retval 函数的返回值。
更多精彩
赞助商链接