python异常与C ++异常处理

The python exception vs C++ exception handling

通过下面的代码,我得到了"gotcha!"用Python。

1
2
3
4
5
6
try:
    x = 0
    y = 3/x
except Exception:
    # ZeroDivisionError
    print"Gotcha!"

我认为这是等价的C++代码,但是它无法捕捉到这个难题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>

int main()
{
  int x = 0;
  //float y = 3.0/x;
  int z = 0;

  try {
      z = 3 / x;
  } catch (std::exception) {
      std::cout <<"Gotcha!";
  }

  std::cout << z;
}
1
Floating point exception

怎么了?我怎样才能抓住这个例外呢?


在C++中,除以零不会产生异常;它会导致未定义的行为。

在实际执行除法之前,必须检查除数,因为如果使用零除数计算除法表达式,则无法知道会发生什么。