我在2005年5月确认这一行为,因此我错了把它称作“网络”(1.1)bug。
我把原来的问题留给了下面,但我经过修订的问题是:我如何利用视频演播室向我提供我所发现和重新投掷的“ exception光”的痕迹,而不是仅仅显示从<条码>到<>>>>条码”发言点的呼声?
情况是,我决定在运行时间上,全球例外手是否在起飞——如果放弃的话,我就希望VS赶上这一例外情况,以便我能通过呼吁站出来指出什么错误。
此前,全球例外的手稿要么编入方案,要么没有编入方案。 但局势发生了变化,我们现在需要暂时决定——它像我一样,需要回头去做这种事情的宏观方法,而没有宏观办法:
if (allow_bubble_up)
{
Foo();
}
else
{
try
{
Foo();
}
catch (Exception e)
{
GlobalExceptionHandler(e);
}
}
但我觉得extremely against DRY。
显然,在NET1.1中,如果你有一个空洞的<条码>第条码>说明,重新排入一个被抓住的例外情况,则从该<条码>第条码”的起步,而不是重新thrown倒整个例外的ack痕——至少,我看到它把双博客称为“灯”,但我没有能够获得更多关于该词的信息。
更具体地说,QuickWatch的StackTrace
财产 除外/
显示了正确的数据,但VS的“呼唤Stack”窗口只显示向 throw声明的层次上的呼声。
在这种样本代码中,我只能看到<代码>Main的1级全方位追踪,尽管我
static public void Foo(int i)
{
if (i > 4)
{
throw new ArgumentOutOfRangeException();
}
Foo(i + 1);
}
static void Main(string[] args)
{
bool allow_bubble_up = true;
try
{
Foo(0);
}
catch (Exception e)
{
if (allow_bubble_up)
{
// stack trace just shows Main
throw;
// also just shows Main
//throw new Exception("asdf", e);
// STILL just shows Main
//throw e;
}
else
{
System.Console.WriteLine(e);
}
}
}
Fabrice Marguerie s blog 表明了如何围绕重新投掷的 st光进行某种工作,例如2.0+,在底线上,他说要检查。 Chris 泰勒对如何做到这一点表示歉意。 NET 1.1。 我不得不在以下网址上查询:,在档案中加以限定。 页: 1 我正确地执行了这一计划,但我仍然只停留在主线上——他的解释是可怕的,我更喜欢使用代码基数(用另一种方法计算现有的一套功能)的我。
我可以看到在被抓获和再处理例外的特性方面有正确的痕迹,但VS所显示的令人难以置信的痕迹是无用的,因为它只是从<代码>第<>throw>发言中追踪。 如果我从来不追捕和重新接纳这一例外情况,那么,我do就获得全面和适当的追踪。
How do I get the right stack trace displayed in VS? I m hoping there s some sort of simple workaround, and that I ve just been searching the wrong terms.
不幸的是,它必须是VS2003+ C# for this.
如果情况不明确,这里需要一幅屏幕(也许需要右翼和视像):
alt text http://img257.imageshack.us/img257/1124/40727627.png