首页 > 代码库 > C++学习之路: try&catch 语句块处理异常

C++学习之路: try&catch 语句块处理异常

#include <iostream>#include <string>#include <vector>#include <stdexcept>using namespace std;//对于不同的异常可以采取不同的catch块进行捕捉int main(int argc, const char *argv[]){    try    {        int i;        cin >> i;        if(i == 0)            throw runtime_error("出现运行期错误");   //发送一个runtime_error异常        else if(i == 1)            throw invalid_argument("非法参数");    }    catch(runtime_error &e)      {        cout << "runtime_error :" << e.what() << endl;  //e.what()中保存着错误信息    }    catch(invalid_argument &e)    {        cout << "invalid_argument:" << e.what() << endl;    }    cout << "继续运行" << endl;    return 0;}

 

#include <iostream>#include <string>#include <vector>#include <stdexcept>using namespace std;//异常捕获不到,照样因为core dumpint main(int argc, const char *argv[]){    try    {        int i;        cin >> i;        if(i == 0)            throw runtime_error("出现运行期错误");        else if(i == 1)            throw invalid_argument("非法参数");    }    catch(runtime_error &e)    {        cout << "runtime_error :" << e.what() << endl;    }    cout << "继续运行" << endl;    return 0;}

如果没有捕捉到异常则跳过CATCH继续执行后面的代码

 

try & catch是处理异常十分好用的一种语句块。要多加练习

 

以下是一个重要的模板

#include <iostream>#include <string>#include <vector>#include <stdexcept>using namespace std;//对于不同的异常可以采取不同的catch块进行捕捉//对于一部分可以统一处理int main(int argc, const char *argv[]){    try    {        int i;        cin >> i;        if(i == 0)            throw runtime_error("出现运行期错误");        else if(i == 1)            throw invalid_argument("非法参数");        else if(i == 2)            throw logic_error("逻辑错误");        else            throw out_of_range("越界错误");    }    catch(...) //能捕获所有的异常    {        }    catch(exception &e)    {        cout << "异常信息:" << e.what() << endl;    }    catch(runtime_error &e)    {        cout << "runtime_error :" << e.what() << endl;    }    catch(invalid_argument &e)    {        cout << "invalid_argument:" << e.what() << endl;    }    cout << "继续运行" << endl;    return 0;}

 

C++学习之路: try&catch 语句块处理异常