Windows函式錯誤處理 (轉)
當一個時,它首先要檢驗傳遞給它的各個引數的有效性,然後再設法任務.如果傳遞一個無效引數,或者由於某種原因無法執行這項操作,那麼操作就會返回一個值,指明該函式在某種程度上執行失敗了。
Windows函式常用的返回值型別:
void
BOOL:0,非0,TURE,FALSE
HANDLE:HANDLE,NULL,INVALID_HANDLE_VALID)
PVOID:NULL,PVOID
LONG/D:具體函式而定
...
編譯了一個所有可能的錯誤程式碼列表,並且為每個錯誤程式碼分配了一個32位的號碼. WinError.h頭(大約2萬多行)包含了Micorsoft定義的錯誤程式碼列表.
當一個Windows函式檢測到一個錯誤時,它會使用執行緒本地(thread-local storage)機制,將相應的錯誤程式碼號碼與呼叫的執行緒關聯起來.這將使執行緒能夠互相獨立的執行,而不會影響各自的錯誤程式碼.
當函式返回時,它的返回值就能指明是否有錯誤發生,若有且要確定是什麼錯誤,就需要呼叫DWORD GetLastError()函式,它返回執行緒的32位錯誤程式碼.有一個Error Lookup可用將錯誤程式碼的號碼換成相應文字描述.Windows還提供了一個函式FormatMessage可以將錯誤程式碼轉換成它的文字描述.
DWORD FormatMessage(
DWORD dwFlags, // and processing options
LPCVOID lpSource, // message source
DWORD dwMessageId, // message ntifier
DWORD dguageId, // language identifier
LPTSTR lpBuffer, // message buffer
DWORD nSize, // maximum size of message buffer
va_list *Arguments // array of message inserts
);
我們也可以在自己的函式中使用該機制,只需要使用VOID SetLastError(DWORD dwErrCode)函式即可,如果WinError.h中的任何程式碼都不能正確地反映該錯誤的性質,那麼可以建立你自己的程式碼。錯誤程式碼的域的劃分表:
位 31~30 29 28 27~16 15~0
內容 嚴重性 Microsoft/客戶 保留 裝置程式碼 異常程式碼
含義 0=成功 0=MS定義的程式碼 必順是0 由MS定義 由MS或客戶定義
1=參考
2=警告 1=客戶定義的程式碼
3=錯誤
注:如果建立自己的錯誤程式碼,必順使29位為1.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1007542/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 六、函式、包和錯誤處理函式
- 兄弟連go教程(15)函式 - 錯誤處理Go函式
- 如何在 Go 中優雅的處理和返回錯誤(1)——函式內部的錯誤處理Go函式
- Go 錯誤處理新思路?用左側函式和表示式Go函式
- [轉] Scala Try 與錯誤處理
- Golang錯誤處理函式defer、panic、recover、errors.New介紹Golang函式Error
- 錯誤處理
- Go 錯誤處理Go
- Python錯誤處理Python
- PHP 錯誤處理PHP
- php錯誤處理PHP
- 錯誤處理:如何通過 error、deferred、panic 等處理錯誤?Error
- Go 函式多返回值錯誤處理與error 型別介紹Go函式Error型別
- 轉載ORA-01591錯誤故障處理(ji)
- openGauss 處理錯誤表
- go的錯誤處理Go
- axios 的錯誤處理iOS
- Python錯誤處理和異常處理(二)Python
- grpc中的錯誤處理RPC
- laravel9 錯誤處理Laravel
- PHP 核心特性 - 錯誤處理PHP
- 15-錯誤處理(Error)Error
- Go語言之錯誤處理Go
- 學習Rust 錯誤處理Rust
- Oracle異常錯誤處理Oracle
- 淺談前端錯誤處理前端
- ORACLE 異常錯誤處理Oracle
- rust學習十、異常處理(錯誤處理)Rust
- 陣列處理函式陣列函式
- [swift 進階]讀書筆記-第八章:錯誤處理 C8P5 錯誤和函式引數Swift筆記函式
- [swift 進階]讀書筆記-第八章:錯誤處理 C8P2 錯誤和函式引數Swift筆記函式
- [swift 進階]讀書筆記-第八章:錯誤處理 C8P9 高階函式和錯誤Swift筆記函式
- PHP安裝後錯誤處理PHP
- go 錯誤處理設計思考Go
- Golang通脈之錯誤處理Golang
- 常用模組 PHP 錯誤處理PHP
- Restful API 中的錯誤處理RESTAPI
- 請教 Element 的錯誤處理
- 異常錯誤資訊處理