在[0]处重新抛出异常:

时间:2011-11-10 17:15:17

标签: .net exception-handling stack-trace

我正在研究堆栈跟踪,我得出了这个输出:

Server stack trace: 
   ...
   at MyProject.Data.Notifications.NotificationCache.InitialisedCache() in NotificationCache.cs: line 72
   at System.Lazy`1.CreateValue()

Exception rethrown at [0]: 
   at System.Lazy`1.get_Value()
   at MyProject.Data.Notifications.NotificationCache.AddItemToCache(NotificationDto dto) in NotificationCache.cs: line 82
bla bla bla

有人可以解释一下Exception rethrown at [0]:的含义并展示如何复制它的简单方案吗? 我尝试通过try / catch / throw,try / catch ex / throw ex等复制它,但我不能。

1 个答案:

答案 0 :(得分:4)

Lazy<T>.CreateValue调用Exception.PrepForRemoting(),这是添加“在[0]”处重新发生异常的位置。这是作者的一个奇怪的设计选择,但可能是他使用它作为获取“分裂”堆栈跟踪的方法,这将允许您查看导致异常的代码和调用它的代码尽管前者是通过代表调用的。