如何阻止自定义ThrowHelper出现在StackTrace中?

sgt*_*gtz 4 .net c#

您可以在.net基类库中找到的模式是ThrowHelper的模式.实质上,它减少了每种方法的字节码量.

无论如何,我想知道是否有一个属性指令来阻止throw Helper中的错误停止在帮助程序内部.我更喜欢调试器停在主叫线上.

  ThrowHelper.ThrowAnException ()
Run Code Online (Sandbox Code Playgroud)

而不是在ThrowAnException()内

Dav*_*Yaw 5

您可以使辅助方法实际上不抛出异常,而只是创建它。堆栈跟踪将指向实际方法中的 throw 语句,而不是 ThrowHelper 中的任何内容。

throw ThrowHelper.CreateAnException();
Run Code Online (Sandbox Code Playgroud)


Raf*_*fal 5

您还可以使用属性标记您的投掷方法:

class ThrowHelper
{
    [DebuggerStepThrough]
    public static void Throw()
    {
        throw new InvalidOperationException();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后调试器不会进入此方法.