Выдайте исключения с пользовательским отслеживанием стека

Установить интервал:

<script type="text/javascript">    
    setInterval(page_refresh, 5*60000); //NOTE: period is passed in milliseconds
</script>
10
задан Joseph Daigle 26 May 2009 в 19:59
поделиться

2 ответа

Возиться с трассировкой стека действительно не кажется хорошей идеей, даже если это возможно (я Сомневаюсь в этом). Скажи мне, зачем тебе вообще это нужно? Сама платформа .NET (BCL) часто использует статические служебные методы для генерации исключений, как вы предлагаете ( ThrowHelper - это его имя по крайней мере в некоторых частях платформы), и, безусловно, скрывает что-нибудь в трассировке стека.

Вот пример трассировки стека из теста, который я только что выполнил:

   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   at System.ThrowHelper.ThrowArgumentOutOfRangeException()
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at HelloWorld.Program.Main(String[] args) in C:\...\Program.cs:line 23
   at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Как видите, BCL использует метод ThrowArgumentOutOfRangeException , и это четко видно в трассировке стека . Если вы хотите пометить вспомогательный метод атрибутом DebuggerNonUserCode ,

3
ответ дан 3 December 2019 в 22:38
поделиться

Свойство StackTrace является виртуальным - создайте собственный производный класс Exception и пусть свойство возвращает все, что вы хотите.

12
ответ дан 3 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: