2012-07-25 52 views
0

我有一個關於C++和.Net/WinForms的困惑。我編寫了一些代碼來啓動後臺工作來檢查用戶對Web服務器的輸入。代碼如下:未處理的句柄異常?

try { 
     loginworker->RunWorkerAsync();      
    } 
    catch(System::InvalidOperationException^) {} 

現在,當我運行該程序,然後點擊登錄按鈕幾次(從而引發「背景工人正在運行的任務」的錯誤),我得到一個未處理的系統:該行代碼中出現InvalidOperationException。有什麼我在這裏失蹤?

我已經用隱藏登錄按鈕的方式編寫代碼,直到代碼執行完成後臺工作人員,但它是否應該捕獲異常?

Collin

+0

如果你執行catch(System :: InvalidOperationException&e){... something ...}'會發生什麼? – 2012-07-25 19:51:14

+0

真正的錯誤是試圖吞噬異常。 – 2012-07-25 21:56:57

+0

我試過了,結果相同。 – 2012-07-25 23:42:07

回答

1

你有沒有調試器設置打破所有異常?如果將RunWorkerAsync行替換爲throw gcnew InvalidOperationException();,然後單擊該按鈕一次,會發生什麼情況?

+0

我相信我會這樣做,這會解釋它。我試過在其他函數上使用throw,並且它沒有檢測到拋出異常。 – 2012-07-26 01:28:49