2010-04-29 35 views

回答

8

SetLastError設置一個簡單的全局變量,它對程序的流程沒有任何影響。

throw會停止正在運行的程序的流程,展開堆棧直到它被try - catch子句捕獲到某處。程序流程將在捕獲結束時繼續。

我建議閱讀this文章,它解釋了例外的概念。並閱讀C++異常。

  • 此外,不要拋出5,拋出一個非內置對象,最好由std :: exception繼承。一個對象可以包含一些告訴catch子句如何處理錯誤的狀態。
4

throw引發被catch塊捕獲的異常並且是C++語言的一部分。 SetLastError()是Microsoft的Windows特定API的一部分,它更改了GetLastError()返回的值。換句話說,它們完全不同!拋出異常展開堆棧(調用所有局部變量的析構函數)並將程序執行移動到適當的catch塊。 SetLastError()沒有這樣做,它只是一個API函數。