Boj*_*zec 5 c++ error-handling exception-handling exception
让我们假设我们正在实现一个行为类似于向量的自定义集合,operator[]如果集合为空,我们想要抛出一些异常.std::vector在这种情况下有未定义的行为,但我们想抛出异常.如果这是C#我们可能会扔InvalidOperationException.但在这种情况下哪个C++异常最合适/最直观?我认为std::out_of_range不是最好的选择,因为集合是空的,因此没有"范围"索引将返回有效(任何)元素.
std::vector::at已经做到了这一点。所以你可以使用at方法而不是operator []。它抛出std::out_of_range无效索引。
请注意,您必须做大量工作才能实现 的性能std::vector。但是,如果您想坚持使用自己的容器并想从标准异常类中抛出,[]那么 likeat方法std::out_of_range是最佳选择。否则,您需要定义自己的自定义异常类。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |