我得到一个递归调用一个抛出堆栈溢出异常的方法.第一个调用被try catch块包围,但没有捕获异常.
堆栈溢出异常是否以特殊方式运行?我可以正确捕获/处理异常吗?
注意:如果相关:
主线程中没有抛出异常
代码抛出异常的对象由Assembly.LoadFrom(...)手动加载.CreateInstance(...)
我在遗留应用程序中遇到了一个奇怪的错误(不是我自己编写的),当我在日历上更改日期时,我收到了StackOverflow异常.
简化版本如下.这是包含两个控件的Windows窗体的代码隐藏,一个名为label2的Label 和一个名为MonthCalendar的日历,名为monthCalendar1.
我认为这里的想法是创造一个打字机效果.我在XP上,我在Windows 7上的同事能够运行这个:
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
const string sTextDisplay = "Press Generate button to build *** Reports ... ";
for (var i = 0; i < 45; i++)
{
label2.Text = Mid(sTextDisplay, 1, i);
System.Threading.Thread.Sleep(50);
//Error on this line
//An unhandled exception of type 'System.StackOverflowException' occurred in System.Windows.Forms.dll
Application.DoEvents();
}
}
public static string Mid(string s, int a, int b)
{
var temp = s.Substring(a - 1, b);
return temp; …Run Code Online (Sandbox Code Playgroud)