簡體   English   中英

無法捕獲的異常

[英]The uncatchable exception

后續: 無法捕獲的異常,第2頁

我正在寫一個自定義綁定引擎; 在目標元素上設置DataContext之前調用我的轉換器。 這本身並不是什么大問題,因為當DataContext最終收到一個值時它會更新。 是什么原因造成的問題是我得到,因為DataContext的是空的NullReferenceException異常,似乎並不想被抓住。

即使我試圖在我的值轉換器中捕獲異常:

try {
    return ( (MethodInfo)_member ).Invoke( parameter, null );
} catch {
    return null;
}

出於某種原因,此時調試器仍在暫停。

替代文字

(這會將堆棧跟蹤備份到catch塊的位置 - 實際異常發生在_member方法中。奇怪的部分是catch塊是灰色的,但是從未到達斷點。)

現在我想它可能是因為異常發生在另一個程序集中,它正被捕獲(我試圖將它打包在一個可重用的類庫中,並且_member指向應用程序集中的方法)。

如果我在沒有調試器的情況下運行我的小測試應用程序它可以正常工作,但是我的應用程序更加強大,並且具有一般異常處理,因此會被觸發。

我想知道是否只有一些屬性或某些東西(或者我可能缺少某些反射參數?)我可以用來使異常被捕獲,就像它應該的那樣。

更新:我很確定這必須是由於反映和使用MethodInfo.Invoke。 似乎異常是“TargetInvocationException”的第一個,內部異常為NullReferenceException。 似乎調用異常以某種方式出現在callstack之外,因此不會被捕獲。 我沒有對線程做任何事情,但也許在MethodInfo.Invoke中有一些隱式的線程轉換?

有沒有人有任何想法如何強制這被捕獲,或者可能是另一種方法從方法名稱調用一個方法,不會有這個問題? 我有點難過。

檢查調試器異常設置,看看是否在拋出NullReferenceException時告訴調試器中斷。

我很確定你可以在調用之后捕獲異常並且沒有捕獲它所需的反射特定機制。

您正在調用的方法是使用線程並在子線程中拋出異常嗎? 如果在您離開try-catch語句之前未完成的異步線程中發生異常,則可能導致try-catch錯過異常。

暫無
暫無

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

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