gpt4 book ai didi

.net - 捕获 ThreadAbortException 并且不执行任何操作是否有意义?

转载 作者:行者123 更新时间:2023-12-04 01:21:15 26 4
gpt4 key购买 nike

catch (ThreadAbortException)
{ }
catch (Exception ex)
{
TraceManager.TraceException(ex,
(int)ErrorCode.GENERIC_EXCEPTION,
ex.StackTrace + "\n" + ex.Message + "\n" + VendorUrl);
}

有没有意义
catch (ThreadAbortException)
{ }

否则会导致 ThreadAbortException被吞噬并永远失去?

最佳答案

ThreadAbortException 无法“完全”捕获;它会在 catch 结束时自动重新抛出阻止(请参阅链接的 MSDN 文档页面)除非 Thread.ResetAbort 首先被调用。

所以,唯一明智的catch块将是:

catch (ThreadAbortException)
{
// possibly do something here
Thread.ResetAbort();
}

但这有一种非常邪恶的气味。可能没有理由这样做,因此您可能需要重新考虑您的方法。

更新:
SO上有很多问题是处理 Thread.Abort :

This one与我在这里给出的答案相同。
This one有一个答案扩展为“除非克苏鲁正在崛起,否则永远不要调用 Thread.Abort”(我将其调低为“邪恶的气味”)。

还有很多其他的。

关于.net - 捕获 ThreadAbortException 并且不执行任何操作是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4651589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com