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++中,除以零不会产生异常;它会导致未定义的行为。
在实际执行除法之前,必须检查除数,因为如果使用零除数计算除法表达式,则无法知道会发生什么。