捕获C ++中的默认异常

时间:2009-08-20 12:57:20

标签: c++ exception

我只是想知道一个系统异常,比如说除以零实际上是“抛出”给应用程序的东西。是否可以默认以某种方式捕捉到它?。

我的意思是我们可以定义一个自定义除法fn,它检查空除数并抛出异常,但只是认为如果默认抛出此异常会很好

//say I do this
int i;
try
{
i /= 0; // My compiler (gcc) did warn abt the divide by zero :-)
}
catch (...)
{
// Can we get here  for this case?
}

2 个答案:

答案 0 :(得分:3)

这取决于操作系统。您可以在Windows上的Visual C ++代码中执行此操作 - catch(...)还将捕获所谓的结构化异常,其中包括除零,访问冲突等,但不包括Linux上的gcc编译代码。

答案 1 :(得分:1)

C ++标准并没有说除以零会引发异常 - 它表示它是未定义的行为。

另外,当你说:

i /= 0; // My compiler (gcc) did warn abt the divide by zero :-)

如果你除以的东西是常数,编译器只能发出警告。