获取导致抛出'std::out_of_range'的数组 在C++中,是否有可能编程地访问导致 STD::OxION/OFFECTOR>的容器,在catch块中被抛出?

获取导致抛出'std::out_of_range'的数组 在C++中,是否有可能编程地访问导致 STD::OxION/OFFECTOR>的容器,在catch块中被抛出?,c++,exception,C++,Exception,编辑:我不打算调试或恢复有问题的容器。我只是有两个不同的容器,其中包含lambda函数。catch块中的流取决于哪个容器是有问题的容器。如果控制异常的抛出,则可以尝试创建自己的自定义异常,然后也抛出它。虽然如果您已经知道导致异常的条件,为什么要抛出它。 抛出并捕获您自己的异常通常是没有意义的,但在您的特殊情况下,您可以尝试这样做。因此,您需要编写自己的异常类,该类封装有关所讨论容器的信息,抛出它,然后处理它 但是,在处理异常时,容器的状态是有问题的 考虑以下几点: 抛出并捕获自己的异常有意义吗

编辑:我不打算调试或恢复有问题的容器。我只是有两个不同的容器,其中包含lambda函数。catch块中的流取决于哪个容器是有问题的容器。

如果控制异常的抛出,则可以尝试创建自己的自定义异常,然后也抛出它。虽然如果您已经知道导致异常的条件,为什么要抛出它。 抛出并捕获您自己的异常通常是没有意义的,但在您的特殊情况下,您可以尝试这样做。因此,您需要编写自己的异常类,该类封装有关所讨论容器的信息,抛出它,然后处理它

但是,在处理异常时,容器的状态是有问题的

考虑以下几点:


  • 抛出并捕获自己的异常有意义吗
  • 如果您不抛出异常,那么您将如何获取有关异常的信息 集装箱
  • 你为什么要访问这个容器
  • 容器是在堆栈上还是在堆上
  • 谁控制容器的寿命
  • 您是否重新引用该异常

否。这与异常点完全相反。您可以在函数中创建自己的
,该函数会抛出包含所需信息的自定义异常。否。有一些调试器会将您带到调用
throw
的位置,您可以获取调用堆栈,或者只是从
std::exception
中,您无法检查任何有关它的信息以找到抛出者异常中没有此类信息,在捕获异常时,数组可能不存在。@Passenger为什么?“抛出并捕获自己的异常有意义吗?”-为什么没有?从标准异常派生您自己的异常类型并抛出并捕获它们是很常见的。是的,这是一个问题,而不是修辞。我不认为我说的没有道理