2010-04-29 61 views

回答

8

SetLastError设置一个简单的全局变量,它对程序的流程没有任何影响。

throw会停止正在运行的程序的流程,展开堆栈直到它被try - catch子句捕获到某处。程序流程将在捕获结束时继续。

我建议阅读this文章,它解释了例外的概念。并阅读C++异常。

  • 此外,不要抛出5,抛出一个非内置对象,最好由std :: exception继承。一个对象可以包含一些告诉catch子句如何处理错误的状态。
4

throw引发被catch块捕获的异常并且是C++语言的一部分。 SetLastError()是Microsoft的Windows特定API的一部分,它更改了GetLastError()返回的值。换句话说,它们完全不同!抛出异常展开堆栈(调用所有局部变量的析构函数)并将程序执行移动到适当的catch块。 SetLastError()没有这样做,它只是一个API函数。