如何捕获C++中的数据类型溢出异常?

Dwi*_*xit 0 c++ try-catch

这里,base可能会溢出超出int的限制,导致运行时错误,此时我打算捕获引发的运行时错误并处理它,所以我尝试了try-catch块,但它没有被捕获。

int base=1;
try
{
     base *= 10;
     //some code
}
catch(...)
{
     //some code
}
Run Code Online (Sandbox Code Playgroud)

use*_*522 5

你不能。有符号整型上的算术溢出会导致未定义的行为,而不是异常。如果这样的溢出发生在你的程序中,那就太晚了。您无法执行任何操作来保存该程序。此时它已经处于未定义状态。

在执行乘法之前,您应该检查是否存在潜在的溢出。