【问题标题】:Return after try/catch block on template function在模板函数的 try/catch 块之后返回
【发布时间】:2016-01-15 12:52:09
【问题描述】:

我在这里遇到了一个问题,因为当堆栈为空时,stack.front() 的返回没有指向任何内容。因此,尽管捕获了异常,我最终还是遇到了糟糕的访问运行时错误。

有没有更好的方法来做到这一点?我希望程序继续运行,即使某些函数被调用并出现错误。

【问题讨论】:

  • 为什么要在函数中捕获异常?您应该将其传播给调用者,以便他们可以处理弹出和清空堆栈时要执行的操作。
  • 你需要在某个地方捕捉它,而这个地方是一个使用你的 StackList 的函数。在 try 块中调用 top()。你知道它可以扔。
  • 你应该在调用top()之前检查你的栈是否为空。这是处理空堆栈问题的最正确方法。

标签: c++ templates exception-handling return try-catch


【解决方案1】:

您遇到了问题,因为您在抛出异常后立即捕获异常。异常不会超出top() 并且您在空堆栈上调用getFront()。在 catch 块中重新抛出你的异常,或者不要全部捕获。

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 2016-08-26
    • 2014-07-16
    • 2012-05-18
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多