根据 MSDN,AppDomain.Unload 会导致卸载 AppDomain 内的所有线程抛出线程中止异常。
域中的线程使用 Abort 方法终止,该方法在线程中引发 ThreadAbortException。尽管线程应该立即终止,但它可以在 finally 子句中继续执行不可预测的时间。-- 来自MSDN
所以我的理解是,每次我在任何地方编写预期在此 AppDomain 中运行的代码时,我都必须期望线程中止可能随时在任何线程上发生。这是真的?任何地方的所有代码都应该假设可以随时抛出 ThreadAbortException 吗?
实际上,这实际上消除了 catch(Exception ex)因为这将捕获 ThreadAbortException 并尝试处理它,通常通过记录一个确实不应该记录的错误(因为卸载 AppDomain 并不是真正的异常)。
是否需要考虑其他任何因素来避免不必要的异常处理/错误记录?