我有一些看起来像这样的C ++代码:
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;
}
}
GradedCourse
构造函数可能会抛出异常,如果构造函数发现包含课程成绩的gr
无效。如果发生此类异常,是否会执行try
块中的任何进一步语句?我可以确定这样的异常会导致不会尝试将GradedCourse
插入coursesTaken
(这是一个STL集)吗?我搜索了Stack Overflow和Google,但没有取得多大成功。
答案 0 :(得分:2)
没有
如果GradedCourse c(cVal, gr);
抛出异常,则try
块内的任何其他内容都不会被执行。
答案 1 :(得分:0)
现在我明白你要问的是什么,但你的头衔和问题本身都在提出相互矛盾的问题。 :)
如果在try块内抛出异常,执行会立即跳转到处理该异常的catch块,绕过所有其他语句。
Here is the documentation on exceptions.它没有直接解决您的问题,但它确实涵盖了其他重要的事情,例如异常嵌套或链接异常处理程序。