c# – 在抛出的异常中是否保留了内联函数的堆栈跟踪?

前端之家收集整理的这篇文章主要介绍了c# – 在抛出的异常中是否保留了内联函数的堆栈跟踪?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在发布模式下编译可执行文件时 – 启用代码优化 – 编译器可以选择内联满足特定条件的函数以提高性能.

我的问题是:当内联函数体中抛出异常时,无论内联扩展如何,都会保留堆栈跟踪信息吗?换句话说,它会将原始函数显示错误源,还是会显示调用函数

解决方法

这取决于抛出异常的方式.如果使用throw语句然后没有问题,则抖动不会内联包含throw的方法.当你需要一个属性设置器快速顺便说一下时要注意的事情.

但是,如果异常是由正常执行引起的,如NullReferenceException或IndexOutOfRangeException等,那么是,如果内联的话,您在堆栈跟踪上看不到该方法名称.这可能有点令人困惑,但您通常会从调用方法的源代码和异常类型中弄清楚它.希望它相对较小. [MethodImpl(MethodImplOptions.NoInlining)]属性可用于禁止内联.当你发现它会有所帮助时,通常为时已晚;)

原文链接:https://www.f2er.com/csharp/244887.html

猜你在找的C#相关文章