我正在使用substr来生成子字符串。我怎样才能捕获substr异常?例如:
terminate called after throwing an instance of 'std::out_of_range'
答案 0 :(得分:7)
像这样:
try
{
/// use substr
}
catch( std::out_of_range& exception )
{
// print out an error, and fail, or restart if appropriate.
}
答案 1 :(得分:5)
try
{
std::string sub = mystring.substr(10,1);
}
catch (std::out_of_range & ex)
{
cout << "caught exception!" << endl;
}
答案 2 :(得分:5)
substr会抛出一个超出范围的异常:
string s = "foo";
s.substr( 1 ); // ok
s.substr( 5 ); // exception
因此,显而易见的解决方案是不要在第二种情况下编写代码。