gpt4 book ai didi

c# - 当线程获得未处理的异常时 CLR 退出

转载 作者:太空狗 更新时间:2023-10-29 22:17:25 27 4
gpt4 key购买 nike

我的应用程序中有后台线程。当其中一个线程遇到未处理的异常时,整个 CLR 将退出。

这是正常行为,还是 CLR 中的错​​误?

我希望线程会退出,但 CLR 会继续工作。

最佳答案

.NET 应用程序的默认行为是在发生未处理的异常时退出。当异常未得到处理时,程序将处于未知且可能不稳定的状态。仅仅因为它发生在后台线程中并不意味着该错误不会影响程序的其余部分。在这种情况下,运行时最谨慎的做法是转储该程序。

您可能会查看 AppDomain.CurrentDomain.UnhandledException,这将使您能够捕获未处理的异常并做出相应的 react 。更好的解决方案是用 try...catch 包装线程过程。但只让它处理那些它知道如何处理的异常。这样做:

void MyThreadProc()
{
try
{
// ...
}
catch
{
// handle all exceptions
// This is a BAD idea
}
}

这是一个非常糟糕的主意,因为它可以掩盖您确实希望传播到主程序的异常。

关于c# - 当线程获得未处理的异常时 CLR 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4843669/

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