C++ Primer第五章③
C++ Primer
第五章 语句
try语句块和异常处理
异常是指存在于运行时的反常行为,而且这些行为超出了函数正常功能的范围,就是说函数无法处理了,例如失去数据库连接以及遇到意外输入等。 C++有一套异常处理机制:
- throw表达式,用于异常检测,表示程序遇到了无法处理的问题,throw就是抛出异常
- try语句块,用于异常处理,try语句块以关键字try开始,并以一个或多个catch子句结束。也就是说,try语句块中代码抛出的异常会被某个catch子句处理。
- 一套异常类(exception class),用于在throw和catch语句之间传递异常的具体信息
throw表达式
我用原书的代码,检查两条数据是不是同一本书
当然你也可以用cout输出,但是在项目程序中,对象相加的代码和用户交互的代码应该要分离开,我们上面的代码就做到了这一点,一旦抛出异常后,程序就把控制权转移给能处理该异常的代码。 类型runtime_error是标准库异常类型的一种if(item1.isbn() != item2.isbn()) { throw runtime_error("不是同一种书"); } cout << item1 + item2;try语句块
接着上面的代码处理:
如果没有找到匹配的catch子句,程序会转到terminat库函数,导致程序非正常退出。while(cin >> item1 >> item2) { try //执行相加,不行抛异常 { if(item1.isbn() != item2.isbn()) { throw runtime_error("不是同一种书"); } cout << item1 + item2; } catch(runtime_error err) { cout << err.what() << "再试一次?请输入yes或者 no" << endl; //what是库里的一个函数 string str; cin >> str; if(!cin || str == "no") //如果没输入或者输入no,就跳出循环,结束程序 { break; } } }标准异常
我没用过,直接贴图了

