首页 > 代码库 > 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 语句块处理异常
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。