WINAPI SetLastError()
和C++關鍵字throw
有什麼區別?例如,SetLastError(5);
和throw 5;
是一樣的嗎?WINAPI SetLastError與C++ Keword Throw
0
A
回答
8
SetLastError設置一個簡單的全局變量,它對程序的流程沒有任何影響。
throw會停止正在運行的程序的流程,展開堆棧直到它被try - catch子句捕獲到某處。程序流程將在捕獲結束時繼續。
我建議閱讀this文章,它解釋了例外的概念。並閱讀C++異常。
- 此外,不要拋出5,拋出一個非內置對象,最好由std :: exception繼承。一個對象可以包含一些告訴catch子句如何處理錯誤的狀態。
4
throw
引發被catch
塊捕獲的異常並且是C++語言的一部分。 SetLastError()
是Microsoft的Windows特定API的一部分,它更改了GetLastError()
返回的值。換句話說,它們完全不同!拋出異常展開堆棧(調用所有局部變量的析構函數)並將程序執行移動到適當的catch塊。 SetLastError()
沒有這樣做,它只是一個API函數。
相關問題
- 1. C++輸入與WINAPI
- 2. 問題與Windows服務(C++,WinAPI的)
- 3. C++ deque throw Segfaults
- 4. C++ Try Catch Throw
- 5. C++ try catch throw
- 6. 多線程與C++的WinApi
- 7. THROW與RAISERROR
- 8. 的DllImport - PreserverSig和SetLastError屬性
- 9. c winapi聲明#
- 10. C++ winapi標高
- 11. C++ WinAPI waveOutGetVolume
- 12. C++ winapi線程
- 13. C庫vs WinApi
- 14. C++ WinAPI輸入
- 15. C++ WINAPI waveOutSetVolume()
- 16. winapi C++ HICON
- 17. C++:noexcept(或throw())virtual destructor = default;
- 18. Rhino .OutRef與.Throw不兼容?
- 19. Declare-and-throw與throw-without-being-being-declared例外
- 20. C++ WinAPI URLDownloadToFile(urlmon)bug
- 21. (C++/WinAPI)反轉LPSTR
- 22. throw Error('msg')vs throw new Error('msg')
- 23. module.js:471 throw err;
- 24. 沒有來源可用throw throw
- 25. Keword這 - 類成員reffering到自身
- 26. module.js 474 throw err
- 27. P/Invoke throw System.ExecutionEngineException
- 28. WinAPI文本輸出C
- 29. C++/WinAPI GDI +雙緩衝
- 30. winapi listview檢查項目C++