文章編號: 173652 - 上次校閱: 2006年11月21日 - 版次: 4.4 注意: 未處理的例外狀況篩選條件不呼叫內部偵錯工具
在此頁中徵狀Win32 處理程序可以安裝在一個 __try / __except 全處理序為基礎的區塊攔截未處理的例外狀況的未處理的例外狀況篩選器函式。當偵錯這類的處理序,您會發現未處理的例外狀況篩選條件從未執行過,甚至當放其內的中斷點。 不過時正在不進行偵錯程序,, 其未處理的例外狀況篩選條件稱為如預期般運作。 發生的原因從處理程序進行偵錯呼叫,UnhandledExceptionFilter() Win32 API 函式不會呼叫應用程式安裝未處理例外狀況篩選條件。 附註UnhandledExceptionFilter() API 會判斷是否正在進行偵錯程序。如果處理程序正在進行偵錯,UnhandledExceptionFilter API 會將例外狀況傳遞到偵錯工具。然後,UnhandledExceptionFilter API 呼叫處理程序未處理的例外狀況篩選條件。 解決方案UnhandledExceptionFilter 應該呼叫應用程式安裝未處理例外狀況篩選條件會被偵錯,除了不進行偵錯的處理序。 偵錯的未處理的例外狀況篩選器函式的方法之一是要放入一個 __try / __except 所有 main () 或 WinMain() 內部程式碼周圍的區塊函式,如下所示: 如果您不想要加入新 __try __except 偵錯未處理的例外狀況篩選條件區塊,您應該使用其他方法,例如判斷提示,如追蹤輸出並偵錯程式碼來驗證例外狀況處理常式的行為。 狀況說明Microsoft 已確認這是在本篇文章開頭所列的 Microsoft 產品中有錯誤。我們研究此 Bug,並將張貼新資訊 「 Microsoft 知識庫 」 中可用時。 其他相關資訊未處理的例外狀況篩選器函式的目的是要讓處理程序來回應發生之外任何 __try / __except 區塊的例外狀況。未處理的例外狀況篩選器是全處理序 ; 如果任何執行緒造成的例外狀況,但不會處理,將取得呼叫未處理的例外狀況篩選條件。篩選函式一旦呼叫,可以修正例外狀況的原因,並繼續執行,或它可以將錯誤傳遞至會結束處理序是預設未處理的例外狀況處理。 Win32 應用程式可以安裝整個處理序未處理的例外狀況篩選器與 SetUnhandledExceptionFilter() API 函式。Microsoft Visual C++ C 執行階段 (CRT) 程式庫啟始程式碼會實作一個 __try / __except main () 函式前後的區塊。當這個區塊會攔截到例外狀況時,稱為名為 _XcptFilter,其例外狀況篩選功能。_XcptFilter 會執行兩件事: 它對應到在 signal() CRT 函式所使用的信號的 Win32 例外狀況,並會分派至其適當的處理常式的信號。如果 (如是這種情況,根據預設值),將設定為 [SIG_DFL 的信號的處理常式,_XcptFilter 呼叫 UnhandledExceptionFilter() API。 UnhandledExceptionFilter() API 會判斷是否正在進行偵錯程序。如果它是 UnhandledExceptionFilter 第一次將例外狀況傳遞至偵錯工具,然後應該要呼叫處理序的未處理的例外狀況篩選條件。 如果處理程序不正在進行偵錯,UnhandledExceptionFilter 呼叫處理序的未處理的例外狀況篩選條件。根據篩選函式的傳回,UnhandledExceptionFilter 會繼續執行,在例外狀況的點或是會顯示系統強制回應對話方塊告知使用者應用程式是因未處理的例外狀況而被終止。 重製行為的步驟編譯下列範例程式碼,然後將設 MyUnFilter 內的中斷點。請注意叫用中斷點永遠不會取得。這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:173652?
(http://support.microsoft.com/kb/173652/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群文章翻譯 |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方