2

我有一些看起来像这样的 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执行块内的任何进一步语句?我可以确定这样的异常不会导致不尝试插入GradedCoursecoursesTaken这是一个 STL 集)吗?我搜索了 Stack Overflow 和 Google,但都没有成功。

4

2 回答 2

2

不。

如果GradedCourse c(cVal, gr);抛出异常,try则不会执行块内的任何其他内容。

于 2012-10-28T17:32:39.770 回答
0

现在我明白你想问什么,但你的标题和问题本身都在问相互矛盾的事情。:)

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

这是有关异常的文档。它没有直接解决您的问题,但它确实涵盖了其他重要的事情,例如异常嵌套或链接异常处理程序。

于 2012-10-28T17:47:32.060 回答