try块中一条语句中的异常是否会导致控制流绕过try块中的任何剩余语句? 我有一些C++代码,看起来像:< /p> void Student::addCourse(Course cVal, string gr) throw(...) { try { GradedCourse c(cVal, gr); // If an exception is thrown here... coursesTaken.insert(c); // will this statement be executed? } catch(...) { throw; } }

try块中一条语句中的异常是否会导致控制流绕过try块中的任何剩余语句? 我有一些C++代码,看起来像:< /p> void Student::addCourse(Course cVal, string gr) throw(...) { try { GradedCourse c(cVal, gr); // If an exception is thrown here... coursesTaken.insert(c); // will this statement be executed? } catch(...) { throw; } },c++,exception,try-catch,C++,Exception,Try Catch,如果构造函数发现包含课程分数的gr无效,则GradedCourse构造函数可能会引发异常。如果发生这种异常,是否会执行try块中的任何其他语句?我是否可以确定这样的异常将不会导致尝试将GradedCourse插入coursesTaken(这是一个STL集合)?我已经搜索了Stack Overflow和Google,但没有多大成功。没有 如果成绩为c级(cVal、gr)引发异常,将不会执行try块中的任何其他内容。现在我明白您想问什么,但您的标题和问题本身都在问相互冲突的问题。:) 如果在try块

如果构造函数发现包含课程分数的
gr
无效,则
GradedCourse
构造函数可能会引发异常。如果发生这种异常,是否会执行
try
块中的任何其他语句?我是否可以确定这样的异常将不会导致尝试将
GradedCourse
插入
coursesTaken
(这是一个STL集合)?我已经搜索了Stack Overflow和Google,但没有多大成功。

没有


如果
成绩为c级(cVal、gr)
引发异常,将不会执行
try
块中的任何其他内容。

现在我明白您想问什么,但您的标题和问题本身都在问相互冲突的问题。:)

如果在try块内抛出异常,则执行会立即跳转到处理该异常的catch块,绕过所有其他语句


它没有直接解决您的问题,但它涵盖了其他重要内容,如异常嵌套或链接异常处理程序。

是的,如果第一条语句引发异常,您的第二条语句将永远不会执行。@HunterMcMillen如果您想回答问题,为什么不发布答案而不是注释?注意(因为我看到的太多了):try/catch/rethrow是不必要的,就像
throw(…)
规范一样……哇,我从来没有想到堆栈溢出在回答这样的问题时会如此之快……很高兴你感到非常惊讶;)我已经看过了链接文章。如果我需要的信息在那里,我就不会问这个问题了。