我正在拋棄ApplicationException
s的遺留項目(閱讀:重構不是一個選項)工作。捕捉異常而沒有捕獲塊
throw new ApplicationException(string.Format("More than one type found with the name {0} in {1}", typeName, assemblies));
語境
我是一個相對較新的開發。 基本拋出/捕捉異常顯然對我有意義。即使將異常喚醒調用堆棧到不同的catch語句的概念也很直觀。
除此之外,我知道CLR是有能力的。此行特別容易引起混淆(來自this article)
將異常傳遞到堆棧,直到應用程序處理它或程序終止。
我在整個解決方案中找不到一個catch語句,這會讓我認爲異常會終止進程,但是我在前端看到了一條錯誤消息 - 進程在運行。
我的調用堆棧的頂部正在旋轉一個新的線程,上面是外部代碼。如果它不是專有的,我會顯示更多的代碼。
Dim installThread As New Thread(CType(Sub() InstallPackageAsyncInner(appsToOverride, package, parameters), Threading.ThreadStart))
問題
難道這是紡起來線程死了,父線程是什麼最終傳播錯誤信息,並處理異常?
如果是這樣,這種控制權轉移如何發生在.NET
或任何相關技術處理它?
我意識到我可能只是橡皮鴨調試自己,但我仍然會發布這個以防萬一它幫助另一個。 – Matt
只有信息片斷和不相關的瑣事,而所有需要的信息都在發佈指南中非常清楚地列出,例如,一個最小但完整的例子。 –
如果你找不到一個異常處理程序,所有想到的都是有人在appdomain級別註冊了未經處理的異常...在代碼中是否有任何UnhandledException + = new UnhandledExceptionEventHandler? – NDJ