如何捕获子异常
How to catch substr exception?
我正在使用substr来生成子字符串。如何捕获子异常?例如:
terminate called after throwing an instance of 'std::out_of_range'
像这样:
try
{
/// use substr
}
catch( std::out_of_range& exception )
{
// print out an error, and fail, or restart if appropriate.
}
try
{
std::string sub = mystring.substr(10,1);
}
catch (std::out_of_range & ex)
{
cout << "caught exception!" << endl;
}
如果 substr 的第一个参数(子字符串的起始位置)大于要应用于的字符串的长度,则会引发超出范围的异常:
string s = "foo";
s.substr( 1 ); // ok
s.substr( 5 ); // exception
因此,显而易见的解决方案是不要在可能发生第二种情况的地方编写代码。
相关文章:
- 当类定义不可见时捕获异常
- 如何将strftime中的格式错误作为异常捕获
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- 来自 Android 应用程序内部的 boost 类型的 boost::wrapexcept<boost::system::system_error> 的未捕获异常
- 有没有办法捕获 STL 函数未被赋予正确参数的异常?
- 禁用自动捕获 Googletest 单元测试中的C++异常
- 如何通过 pybind11 从 python 中的C++中捕获异常?
- C++:main() 未捕获的异常的自定义格式
- 捕获多个异常
- C++异常被捕获延迟,可能导致这种情况的原因是什么?
- 如何捕获 C++ 内置异常对象
- 信号后未捕获异常
- 未捕获 Simdjson 库的 C++ 异常
- 捕获异常后如何退出程序执行
- C++ 捕获异常后进行清理的标准方法是什么?
- 捕获全部处理程序检测C++中的子类异常
- 浮点异常不可捕获
- 异常.尝试 - 捕获块
- 异常被捕获两次
- 阻止异常被捕获的因素