我在通用 try catch 块(捕获所有异常)中得到 C# 中的 ThreadAbortException - 但是,我无法对其进行跟踪,表明它可能在托管代码之外被杀死。
我得到一个 HRESULT 代码 -2146233040,解码时:
FACILITY_URT 19 - .NET CLR
代码 0x1530 - COR_E_THREADABORTED
扔到一个线程中导致它中止。抓不住。
任何想法如何追踪这只野兽?
我在通用 try catch 块(捕获所有异常)中得到 C# 中的 ThreadAbortException - 但是,我无法对其进行跟踪,表明它可能在托管代码之外被杀死。
我得到一个 HRESULT 代码 -2146233040,解码时:
FACILITY_URT 19 - .NET CLR
代码 0x1530 - COR_E_THREADABORTED
扔到一个线程中导致它中止。抓不住。
任何想法如何追踪这只野兽?
这是由引发 a 的调用Thread.Abort()
引起的ThreadAbortException
。
请注意,您无法阻止 aThreadAbortException
的传播,即使它是由托管代码抛出的。你可以抓住它,但你不能忽视它。
如果您查看此链接并进行搜索,COR_E_THREADABORTED
您会发现它用于ThreadAbortException
.
可能有一种方法可以找到引发此异常的位置:
如果您可以在 Visual Studio 调试器下运行它,请转到菜单项Debug | Exceptions
,然后勾选“托管调试助手”旁边的抛出列中的复选框。(如果你愿意,你可以勾选throws列中的所有项目。)然后在调试器下运行程序,看看是否有任何弹出。