我正在抛弃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