我该怎么抓StackOverflowException?
我有一个允许用户编写脚本的程序,当运行任意用户代码时,我可能会得到一个StackOverflowException.运行用户代码的部分显然是用try- 包围的catch,但是在正常情况下堆栈溢出是无法捕获的.
我环顾四周,这是我能找到的最丰富的答案,但仍然让我陷入了死胡同; 从BCL团队博客中的一篇文章中我发现,我应该使用RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup调用代码和代理,即使在堆栈溢出后也会调用它,但是在尝试时,进程会终止堆栈溢出消息,而代理不会被调用.我已经尝试添加PrePrepareMethodAttribute处理程序方法,但没有改变任何东西.
我也尝试使用AppDomain并处理事件UnhandledException和DomainUnload事件 - 但整个进程在堆栈溢出时被杀死.即使我throw new StackOverflowException();手动而没有得到实际的堆栈溢出,也会发生同样的情况.
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |