如何在不使用if / else的情况下处理以下异常(仅使用try / catch):-
string S;
cin >> S;
stringstream ss(S);
int n;
try {
ss>>n;
if(ss.fail()) throw (exception())
else cout<<n;
}
catch (const exception& e) { cout << "Bad String"<<endl;}
答案 0 :(得分:1)
一个流有一个exceptions
成员函数来告诉它什么条件应该引发异常。在这种情况下,您只需告诉它在fail
上引发异常:
#include <string>
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string S;
cin >> S;
stringstream ss(S);
ss.exceptions(ios::failbit);
int n;
try {
ss>>n;
cout<<n;
}
catch (const exception& e) {
cout << "Bad String\n";
}
}
这似乎起初看起来没什么用,但是如果您要这样做,这就是您的方法。
哦,停止使用using namespace std;
。到处都是问题。