一尘不染

C#捕获堆栈溢出异常

c#

我有一个递归调用一个引发堆栈溢出异常的方法。第一次调用被try catch块包围,但未捕获异常。

堆栈溢出异常是否以特殊方式表现?我可以正确捕获/处理异常吗?

不确定是否相关,但还有其他信息:

  • 在主线程中没有抛出异常

  • 代码引发异常的对象由Assembly.LoadFrom(…)。CreateInstance(…)手动加载


阅读 321

收藏
2020-05-19

共1个答案

一尘不染

从2.0版本开始,只能在以下情况下捕获StackOverflow异常。

  1. CLR在托管环境中运行*主机专门允许处理StackOverflow异常
  2. 用户代码引发了stackoverflow异常,而不是由于实际的堆栈溢出情况(参考

  3. “托管环境”,如“我的代码托管CLR,并且我配置CLR的选项”中那样,而不是“我的代码在共享托管上运行”中

2020-05-19