a/b ,b = 0时的异常。
用try{} catch{} 来处理异常,在try中使用throw抛出异常--runtime_error("异常信息说明")
try {
if (!b)
throw runtime_error("Divisor cann't be zero!"); //std::runtime_error
cout << a << " / " << b << " = " << a / b << endl;
}
catch (runtime_error err) { //catch (exception& e) 也可以,下方的err变为e.what()
cout << err.what() << "\nTry Again? Enter y or n" << endl;
char c;
cin >> c;
if (!cin || c == 'n')
break; //跳出while循环
}
全部代码:
#include "mylib.h"
int main() {
int a, b;
while(cin >> a >> b){
try {
if (!b)
throw runtime_error("Divisor is zero!");
cout << a << " / " << b << " = " << a / b << endl;
}
catch (exception& e) {
cerr << "Caught :" << e.what() << endl;
}
//catch (runtime_error err) {
// cout << err.what() << "\nTry Again? Enter y or n" << endl;
// char c;
// cin >> c;
// if (!cin || c == 'n')
// break; //跳出while循环
//}
}
return 0;
}