如何捕获和处理 StackOverflowException

yyw84 2006-03-21 02:03:34

我通过GridView绑定DataSet,想让GridView支持排序功能,可是在执行Sorting事件绑定的方法时抛出StackOverflowException异常,通过try...catch竟也无法捕获到,我的代码如下:
截图: http://img296.photo.163.com/yangyanwu84/9200290/986720333.jpg

try
{
((GridView)sender).Sort(e.SortExpression, e.SortDirection); // 未处理的“System.StackOverflowException”类型的异常出现在 System.Web.dll 中。
}
catch (StackOverflowException ex)
{
Message.Show(this.Page, string.Format("StackOverflowException: {0}", ex.Message));
}
catch (SystemException ex)
{
Message.Show(this.Page, string.Format("SystemException: {0}", ex.Message));
}
catch (Exception ex)
{
Message.Show(this.Page, string.Format("Exception:{0}", ex.Message));
}
catch
{
Message.Show(this.Page, "UnKnowException");
}
...全文
528 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyw84 2006-03-22
  • 打赏
  • 举报
回复
顶上去,问题还没解决,
大家可以写个简单的程序测试一下看会不会

我的环境是:
OS: Windows 2003
IDE: VS 2005
DB: SQL 2005
yyw84 2006-03-22
  • 打赏
  • 举报
回复
我想总有人实现过排序的吧,
还是我分给得太少了?
pbwf 2006-03-22
  • 打赏
  • 举报
回复
没遇到过类似的.
yyw84 2006-03-22
  • 打赏
  • 举报
回复
有没有人用GridView通过后台写代码绑定数据源做过排序的
你们是怎么实现的?
yyw84 2006-03-22
  • 打赏
  • 举报
回复

谢谢 time_is_life(今夜太冷)

那我再找找资料吧,昨天的问题到留到今天还是一样,什么都重启过,就差没断电后再接通了
time_is_life 2006-03-22
  • 打赏
  • 举报
回复
没有办法捕捉,好像重新启动服务器或者重新运行程序就好了吧

我记得《.net框架程序设计》里面有一段专门论述这几个无法捕捉的异常的
New919 2006-03-21
  • 打赏
  • 举报
回复
堆栈溢出了
怕怕
yyw84 2006-03-21
  • 打赏
  • 举报
回复
谢谢 championchen79(现学现卖)

现在知道了为什么try...catch为什么对该异常不起效果了,不过还是不明白引起异常的原因,难道GridView.Sort 方法不能这样用, 就是一个最简单的例子它也报这异常... -_-?
自由人2008 2006-03-21
  • 打赏
  • 举报
回复
终于在框架设计中查到了这方面的说明
clR在线程耗尽所有的堆栈空间时,抛出此异常。我们的应用程序可以捕获到该异常,但finnaly程序块不执行,因为已经没有多余的空间了.此时应用程序处于一种未定义的状态,任何捕捉到stackoverflowexception的catch块都应该将错误重新抛出,以便让clr中断进程.如果堆栈益出出现在clr内部,则我们就不能捕获到异常,也不会执行finanly,CLR中断.
大家明白点了吗。
yyw84 2006-03-21
  • 打赏
  • 举报
回复
是在程序执行到的第一次就抛出异常的,
我新建了一个项目,做了一个小的测试,通过拖拉控件绑定数据,结果,在不写任何代码的情况下可以很好的完成所有的功能,包括排序、分页,但当我让它执行下面这段代码后,同样的问题还是发生了,异常同样被抛出,而且神秘地逃出法try...catch的捕获

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
try
{
((GridView)sender).Sort(e.SortExpression, e.SortDirection);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
The123 2006-03-21
  • 打赏
  • 举报
回复
该不是你那个事件被触发了无数次了吧?
yyw84 2006-03-21
  • 打赏
  • 举报
回复
主要问题是try...catch后程序运行到那语句依然被中止,
try...catch没有起到本应该有的效果
自由人2008 2006-03-21
  • 打赏
  • 举报
回复
关注:
顺序什么都没有错.不知道什么原因!

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧