为什么StackoverflowException终止整个进程而不是单个线程?

时间:2016-12-14 09:24:33

标签: .net

由于每个线程都拥有私有堆栈,为什么不通知另一个线程StackoverflowException并让线程死掉,特别是如果它是后台工作线程?

1 个答案:

答案 0 :(得分:3)

如果任何异常在没有被捕获的情况下将其恢复到根状态,那么任何异常都会将其删除。无法被捕获(从.NET 2.0开始)。因此:热潮。

基本上,不要导致StackOverflowException。例如,向递归代码添加计数器,或者使用非递归实现重写它(可能是对StackOverflowExceptionQueue<T>个待处理项的循环。)