5
A
回答
0
这是正常行为。也许你想捕捉异常来阻止应用程序退出。
1
是的,这是正常的,你可以看到这个类似的question了解更多细节。
1
这是来自v2.0的CLR的正常行为。这里是一个MSDN的帖子。为避免终止进程,您可以使用类似这样的东西
<legacyUnhandledExceptionPolicy enabled="1"/>
这是不可取的。
4
您的预期行为曾经是1.1中的行为。通常认为这是一个坏主意。当任何线程中有未处理的异常时,您的进程可能会处于不一致的状态。对共享数据的更新可能会部分应用,等等。运行时没有安全地处理这种情况的信息,甚至不知道如何处理这种情况,所以它的选择将等于终止线程并让程序进入一个奇怪的状态。这可能导致资源泄漏,数据中断,数据损坏等。通过终止给定未处理异常的流程,您确切知道发生了什么,流程结束。
7
.NET应用程序的默认行为是每当发生未处理的异常时退出。当一个异常处理未得到处理时,程序处于一个未知的,可能不稳定的状态。仅仅因为它发生在后台线程中并不意味着错误不会影响程序的其余部分。在这种情况下,运行时最谨慎的方法是转储程序。
您可能会考虑AppDomain.CurrentDomain.UnhandledException
,这将允许您捕获未处理的异常并作出相应的反应。更好的解决方案是用try...catch
包装你的线程处理器。但只有它能够处理那些它知道如何处理的例外。这样做:
void MyThreadProc()
{
try
{
// ...
}
catch
{
// handle all exceptions
// This is a BAD idea
}
}
是一个非常糟糕的主意,因为它可以掩盖您确实希望传播到主程序的异常。
相关问题
- 1. 当setDefaultUncaughtExceptionHandler捕获未处理的异常时,线程冻结(reportDropResult)
- 2. 线程时出现未处理的.Net框架异常
- 3. 捕获未处理的线程异常
- 4. 多线程未处理异常
- 5. 当python脚本具有未处理的异常时退出代码
- 6. Android:线程退出时未捕获的异常
- 7. threadid = 1:线程退出时未捕获的异常(组= 0x40c1da68)
- 8. 当Perl线程退出时,串口处理程序错误
- 9. 在主线程的线程中引发未处理的异常?
- 10. Boost线程异常处理
- 11. 处理异常时抛出的额外的未捕获异常
- 12. 在全局异常处理程序中处理线程异常?
- 13. 蟒蛇退出处理异常
- 14. 异步任务致命异常 - 线程正在退出,未捕获的异常
- 15. Winforms毫不客气地退出“未处理的异常”
- 16. 当应用程序正在完成时未处理的异常
- 17. Python线程捕捉异常并退出
- 18. threadid = 1线程退出与未捕获的异常(组= 0x410702a0)
- 19. Android:“线程退出与未捕获的异常(组= 0x4001d800)”
- 20. 线程退出与未捕获的异常(组= 0x4001d800)
- 21. 线程退出与未捕获的异常(组= 0x40a3b1f8)
- 22. 线程以未捕获的异常退出(group = 0x4001b188)。 Nullpointerexception
- 23. 线程退出与未捕获的异常(组= 0x94cabb20)
- 24. threadid = 1:线程以未捕获的异常错误退出
- 25. Android开发:“线程退出与未捕获的异常”
- 26. 线程退出由于未捕获的异常
- 27. 出口导致未处理的异常
- 28. 当主线程退出时,如何让子线程退出?
- 29. CLR存储过程中的全局异常处理程序
- 30. 多处理池当任何线程出现异常时挂起池