簡體   English   中英

捕獲調用Application.DoEvents()時引發的異常

[英]Catching exceptions thrown when invoking Application.DoEvents()

我是.Net的新手,我想知道為什么此代碼仍然引發未處理的異常。

try
{
    Application.DoEvents();
}
catch
{
}

有人有什么主意嗎? 此代碼在事件處理程序中調用。 它拋出NullReferenceException。 有趣的是,當我嘗試在此代碼之前放置一個斷點時,不會引發異常。 僅當我讓代碼連續運行時,才會發生異常。

並非所有異常都是可捕獲的。 您沒有告訴我們您正在看到什么異常,但是請注意,永遠不會捕獲StackOverflowExceptionExecutionEngineException 我知道前者可能與Application.DoEvents (通常在System.Drawing )發生,但我不確定后者。

無論如何,您的代碼是邪惡的。 不要吞下例外。 這意味着您正在吞噬錯誤。

通常,請嘗試避免Application.DoEvents 確實可能發生令人討厭的重入問題。

注意使用Application.DoEvents() ,大多數時間用於錯誤的事情,例如在時間花費過程中更新進度條,這可以通過異步編程來完成。 您無法捕獲所有異常,請告訴我們正在引發什么異常。

也可能是當您在沒有斷點的情況下運行應用程序時,DoEvents允許執行另一段代碼,而段代碼引發異常。

您應該檢查異常的StackTrace以查看其指向您的位置(或在此處發布堆棧跟蹤,我們可以查看它)。 如果是這種情況,則在使用斷點並逐步執行時,您可能看不到異常,因為DoEvent和線程執行的方式不同。

如果在DoEvents期間從其他地方拋出了異常,那么這也可以解釋為什么您會得到未處理的異常,即使上面的代碼試圖對任何異常進行黑洞處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM