Исключение переброшено в [0]: - PullRequest
4 голосов
/ 10 ноября 2011

Я исследую трассировку стека и обнаружил следующее:

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 Ответ

4 голосов
/ 10 ноября 2011

Lazy<T>.CreateValue вызывает Exception.PrepForRemoting(), в который добавляется бит «Исключение переброшено в [0]». Это немного странный выбор дизайна со стороны автора, но, вероятно, он использовал его как способ получить трассировку «разбитого» стека, которая позволила бы вам увидеть как код, вызвавший исключение, так и код, вызвавший его несмотря на то, что первый вызывается через делегата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...