C++ Primer 中关于 what()的解释:
在之前的例子里,我们使用了一个 throw 表达式以避免把两个代表不同书籍的 Sales_item 相加。我们假设执行 Sales_item 对象加法的代码是与用户交互的代码分离开的。其中与用户交互的代码负责处理发生的异常,它的形式可能如下所示:
while(cin >> item1 >> item2){
try{
//执行添加两个Sales_item对象的代码
//如果添加失败,代码抛出一个runtime_error异常
}catch(runtime_error err){
//提醒用户两个ISBN必须一致,询问是否重新输入
cout << err.what()
<<"\nTry Again? Enter y or n"<< endl;
char c;
cin >> c;
İf (!cin || c =='n')
break;//跳出while循环
}
}