C++ 提供了异常机制来保证程序的运行的安全。当某段代码检测到异常时,就会抛出一个异常,而另一段代码就会捕获到该异常,并进行相应的操作。 C++ 14 提供了内建类型 std::invalid_argument 来辅助程序员捕获异常。
#include <iostream>
#include <stdexcept>
double div(double numerator, double denominator)
{
if(denominator==0){
throw std::invalid_argument("Denominator is 0.");
}
return (numerator/denominator);
}
int main(void)
{
try{
std::cout<<div(2.5, 0.5)<<std::endl;
std::cout<<div(2.3, 0.0f)<<std::endl;
std::cout<<div(4.5, 0.5)<<std::endl;
}catch(const std::invalid_argument & exception){
std::cout<<"Exception: "<<exception.what()<<std::endl;
}
return 0;
}
5
Exception: Denominator is 0.
结果显示:第一次正则执行,第二次检测到异常,直接抛出异常执行 catch 里面的程序,跳过了第三调用 (不管程序是否正确)。这样的检测机制方便程序员写出鲁棒性的代码